diff --git a/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/README.md b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/README.md new file mode 100644 index 000000000000..81c75bb1ff2d --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/README.md @@ -0,0 +1,296 @@ + + +# Quantile Function + +> [Wald][wald-distribution] distribution [quantile function][quantile-function]. + +
+ +The [quantile function][quantile-function] for a [Wald][wald-distribution] random variable is + + + +```math +Q(p;\mu,\lambda) = \inf\left\{ x \in (0,\infty)\,:\,p \le F(x;\mu,\lambda) \right\} +``` + + + +for `0 <= p <= 1`, where `μ > 0` is the mean, `λ > 0` is the shape parameter, and `F` is the cumulative distribution function (CDF). As the [Wald][wald-distribution] CDF does not have a closed-form inverse, the quantile function is evaluated numerically. + +
+ + + + + +
+ +## Usage + +```javascript +var quantile = require( '@stdlib/stats/base/dists/wald/quantile' ); +``` + +#### quantile( p, mu, lambda ) + +Evaluates the [quantile function][quantile-function] for a [Wald][wald-distribution] distribution with mean `mu` and shape parameter `lambda` at a probability `p`. + +```javascript +var y = quantile( 0.8, 1.0, 1.0 ); +// returns ~1.448 + +y = quantile( 0.5, 4.0, 2.0 ); +// returns ~2.057 +``` + +If provided a probability `p` outside the interval `[0,1]`, the function returns `NaN`. + +```javascript +var y = quantile( 1.9, 1.0, 1.0 ); +// returns NaN + +y = quantile( -0.1, 1.0, 1.0 ); +// returns NaN +``` + +If provided `NaN` as any argument, the function returns `NaN`. + +```javascript +var y = quantile( NaN, 1.0, 1.0 ); +// returns NaN + +y = quantile( 0.5, NaN, 1.0 ); +// returns NaN + +y = quantile( 0.5, 1.0, NaN ); +// returns NaN +``` + +If provided `mu <= 0`, the function returns `NaN`. + +```javascript +var y = quantile( 0.5, 0.0, 1.0 ); +// returns NaN + +y = quantile( 0.5, -1.0, 1.0 ); +// returns NaN +``` + +If provided `lambda < 0`, the function returns `NaN`. + +```javascript +var y = quantile( 0.5, 1.0, -1.0 ); +// returns NaN +``` + +If `lambda = 0`, the function evaluates the [quantile function][quantile-function] of a [degenerate distribution][degenerate-distribution] centered at `mu`. + +```javascript +var y = quantile( 0.3, 8.0, 0.0 ); +// returns 8.0 + +y = quantile( 0.9, 8.0, 0.0 ); +// returns 8.0 +``` + +#### quantile.factory( mu, lambda ) + +Returns a function for evaluating the [quantile function][quantile-function] of a [Wald][wald-distribution] distribution with mean `mu` and shape parameter `lambda`. + +```javascript +var myquantile = quantile.factory( 4.0, 2.0 ); + +var y = myquantile( 0.5 ); +// returns ~2.057 + +y = myquantile( 0.8 ); +// returns ~5.591 +``` + +
+ + + + + +
+ +
+ + + + + +
+ +## Examples + + + +```javascript +var uniform = require( '@stdlib/random/array/uniform' ); +var EPS = require( '@stdlib/constants/float64/eps' ); +var logEachMap = require( '@stdlib/console/log-each-map' ); +var quantile = require( '@stdlib/stats/base/dists/wald/quantile' ); + +var opts = { + 'dtype': 'float64' +}; +var p = uniform( 10, 0.0, 1.0, opts ); +var mu = uniform( 10, EPS, 10.0, opts ); +var lambda = uniform( 10, EPS, 10.0, opts ); + +logEachMap( 'p: %0.4f, μ: %0.4f, λ: %0.4f, Q(p;μ,λ): %0.4f', p, mu, lambda, quantile ); +``` + +
+ + + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/stats/base/dists/wald/quantile.h" +``` + +#### stdlib_base_dists_wald_quantile( p, mu, lambda ) + +Evaluates the quantile function for a Wald distribution with mean `mu` and shape parameter `lambda` at a probability `p`. + +```c +double out = stdlib_base_dists_wald_quantile( 0.8, 1.0, 1.0 ); +// returns ~1.448 +``` + +The function accepts the following arguments: + +- **p**: `[in] double` input probability. +- **mu**: `[in] double` mean. +- **lambda**: `[in] double` shape parameter. + +```c +double stdlib_base_dists_wald_quantile( const double p, const double mu, const double lambda ); +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/stats/base/dists/wald/quantile.h" +#include "stdlib/constants/float64/eps.h" +#include +#include + +static double random_uniform( const double min, const double max ) { + double v = (double)rand() / ( (double)RAND_MAX + 1.0 ); + return min + ( v*(max-min) ); +} + +int main( void ) { + double lambda; + double mu; + double p; + double y; + int i; + + for ( i = 0; i < 10; i++ ) { + p = random_uniform( 0.0, 1.0 ); + mu = random_uniform( STDLIB_CONSTANT_FLOAT64_EPS, 10.0 ); + lambda = random_uniform( STDLIB_CONSTANT_FLOAT64_EPS, 10.0 ); + y = stdlib_base_dists_wald_quantile( p, mu, lambda ); + printf( "p: %.4f, μ: %.4f, λ: %.4f, Q(p;μ,λ): %.4f\n", p, mu, lambda, y ); + } +} +``` + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/benchmark/benchmark.js new file mode 100644 index 000000000000..253a9806fbc0 --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/benchmark/benchmark.js @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var EPS = require( '@stdlib/constants/float64/eps' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var quantile = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var lambda; + var opts; + var mu; + var p; + var y; + var i; + + opts = { + 'dtype': 'float64' + }; + p = uniform( 100, 0.0, 1.0, opts ); + mu = uniform( 100, EPS, 10.0, opts ); + lambda = uniform( 100, EPS, 10.0, opts ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = quantile( p[ i % p.length ], mu[ i % mu.length ], lambda[ i % lambda.length ] ); + if ( isnan( y ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( y ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( format( '%s:factory', pkg ), function benchmark( b ) { + var myquantile; + var lambda; + var opts; + var mu; + var p; + var y; + var i; + + opts = { + 'dtype': 'float64' + }; + p = uniform( 100, 0.0, 1.0, opts ); + + mu = 10.0; + lambda = 4.0; + myquantile = quantile.factory( mu, lambda ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = myquantile( p[ i % p.length ] ); + if ( isnan( y ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( y ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/benchmark/benchmark.native.js new file mode 100644 index 000000000000..62353d43386f --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/benchmark/benchmark.native.js @@ -0,0 +1,71 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF 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 bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var EPS = require( '@stdlib/constants/float64/eps' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var quantile = tryRequire( resolve( __dirname, './../lib/native.js' ) ); +var opts = { + 'skip': ( quantile instanceof Error ) +}; + + +// MAIN // + +bench( format( '%s::native', pkg ), opts, function benchmark( b ) { + var arrayOpts; + var lambda; + var mu; + var p; + var y; + var i; + + arrayOpts = { + 'dtype': 'float64' + }; + p = uniform( 100, 0.0, 1.0, arrayOpts ); + mu = uniform( 100, EPS, 10.0, arrayOpts ); + lambda = uniform( 100, EPS, 10.0, arrayOpts ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = quantile( p[ i % p.length ], mu[ i % mu.length ], lambda[ i % lambda.length ] ); + if ( isnan( y ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( y ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/benchmark/c/Makefile b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/benchmark/c/Makefile new file mode 100644 index 000000000000..979768abbcec --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/benchmark/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT 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 # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := benchmark.out + + +# RULES # + +#/ +# Compiles source files. +# +# @param {string} [C_COMPILER] - C compiler (e.g., `gcc`) +# @param {string} [CFLAGS] - C compiler options +# @param {(string|void)} [fPIC] - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} [INCLUDE] - list of includes (e.g., `-I /foo/bar -I /beep/boop/include`) +# @param {string} [SOURCE_FILES] - list of source files +# @param {string} [LIBPATH] - list of library paths (e.g., `-L /foo/bar -L /beep/boop`) +# @param {string} [LIBRARIES] - list of libraries (e.g., `-lopenblas -lpthread`) +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler (e.g., `gcc`) +# @param {string} CFLAGS - C compiler options +# @param {(string|void)} fPIC - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} INCLUDE - list of includes (e.g., `-I /foo/bar`) +# @param {string} SOURCE_FILES - list of source files +# @param {string} LIBPATH - list of library paths (e.g., `-L /foo/bar`) +# @param {string} LIBRARIES - list of libraries (e.g., `-lopenblas`) +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) $(fPIC) $(INCLUDE) -o $@ $(SOURCE_FILES) $< $(LIBPATH) -lm $(LIBRARIES) + +#/ +# Runs compiled benchmarks. +# +# @example +# make run +#/ +run: $(c_targets) + $(QUIET) ./$< + +.PHONY: run + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/benchmark/c/benchmark.c b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/benchmark/c/benchmark.c new file mode 100644 index 000000000000..8b67425575e8 --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/benchmark/c/benchmark.c @@ -0,0 +1,143 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/stats/base/dists/wald/quantile.h" +#include "stdlib/constants/float64/eps.h" +#include +#include +#include +#include +#include + +#define NAME "wald-quantile" +#define ITERATIONS 1000000 +#define REPEATS 3 + +/** +* Prints the TAP version. +*/ +static void print_version( void ) { + printf( "TAP version 13\n" ); +} + +/** +* Prints the TAP summary. +* +* @param total total number of tests +* @param passing total number of passing tests +*/ +static void print_summary( int total, int passing ) { + printf( "#\n" ); + printf( "1..%d\n", total ); // TAP plan + printf( "# total %d\n", total ); + printf( "# pass %d\n", passing ); + printf( "#\n" ); + printf( "# ok\n" ); +} + +/** +* Prints benchmarks results. +* +* @param elapsed elapsed time in seconds +*/ +static void print_results( double elapsed ) { + double rate = (double)ITERATIONS / elapsed; + printf( " ---\n" ); + printf( " iterations: %d\n", ITERATIONS ); + printf( " elapsed: %0.9f\n", elapsed ); + printf( " rate: %0.9f\n", rate ); + printf( " ...\n" ); +} + +/** +* Returns a clock time. +* +* @return clock time +*/ +static double tic( void ) { + struct timeval now; + gettimeofday( &now, NULL ); + return (double)now.tv_sec + (double)now.tv_usec/1.0e6; +} + +/** +* Generates a random number on the interval [min,max). +* +* @param min minimum value (inclusive) +* @param max maximum value (exclusive) +* @return random number +*/ +static double random_uniform( const double min, const double max ) { + double v = (double)rand() / ( (double)RAND_MAX + 1.0 ); + return min + ( v*(max-min) ); +} + +/** +* Runs a benchmark. +* +* @return elapsed time in seconds +*/ +static double benchmark( void ) { + double lambda[ 100 ]; + double mu[ 100 ]; + double p[ 100 ]; + double elapsed; + double t; + double y; + int i; + + for ( i = 0; i < 100; i++ ) { + p[ i ] = random_uniform( 0.0, 1.0 ); + mu[ i ] = random_uniform( STDLIB_CONSTANT_FLOAT64_EPS, 10.0 ); + lambda[ i ] = random_uniform( STDLIB_CONSTANT_FLOAT64_EPS, 10.0 ); + } + + t = tic(); + for ( i = 0; i < ITERATIONS; i++ ) { + y = stdlib_base_dists_wald_quantile( p[ i%100 ], mu[ i%100 ], lambda[ i%100 ] ); + if ( y != y ) { + printf( "should not return NaN\n" ); + break; + } + } + elapsed = tic() - t; + if ( y != y ) { + printf( "should not return NaN\n" ); + } + return elapsed; +} + +/** +* Main execution sequence. +*/ +int main( void ) { + double elapsed; + int i; + + // Use the current time to seed the random number generator: + srand( time( NULL ) ); + + print_version(); + for ( i = 0; i < REPEATS; i++ ) { + printf( "# c::%s\n", NAME ); + elapsed = benchmark(); + print_results( elapsed ); + printf( "ok %d benchmark finished\n", i+1 ); + } + print_summary( REPEATS, REPEATS ); +} diff --git a/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/binding.gyp b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/binding.gyp new file mode 100644 index 000000000000..0d6508a12e99 --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/binding.gyp @@ -0,0 +1,170 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A `.gyp` file for building a Node.js native add-on. +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # List of files to include in this file: + 'includes': [ + './include.gypi', + ], + + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Target name should match the add-on export name: + 'addon_target_name%': 'addon', + + # Set variables based on the host OS: + 'conditions': [ + [ + 'OS=="win"', + { + # Define the object file suffix: + 'obj': 'obj', + }, + { + # Define the object file suffix: + 'obj': 'o', + } + ], # end condition (OS=="win") + ], # end conditions + }, # end variables + + # Define compile targets: + 'targets': [ + + # Target to generate an add-on: + { + # The target name should match the add-on export name: + 'target_name': '<(addon_target_name)', + + # Define dependencies: + 'dependencies': [], + + # Define directories which contain relevant include headers: + 'include_dirs': [ + # Local include directory: + '<@(include_dirs)', + ], + + # List of source files: + 'sources': [ + '<@(src_files)', + ], + + # Settings which should be applied when a target's object files are used as linker input: + 'link_settings': { + # Define libraries: + 'libraries': [ + '<@(libraries)', + ], + + # Define library directories: + 'library_dirs': [ + '<@(library_dirs)', + ], + }, + + # C/C++ compiler flags: + 'cflags': [ + # Enable commonly used warning options: + '-Wall', + + # Aggressive optimization: + '-O3', + ], + + # C specific compiler flags: + 'cflags_c': [ + # Specify the C standard to which a program is expected to conform: + '-std=c99', + ], + + # C++ specific compiler flags: + 'cflags_cpp': [ + # Specify the C++ standard to which a program is expected to conform: + '-std=c++11', + ], + + # Linker flags: + 'ldflags': [], + + # Apply conditions based on the host OS: + 'conditions': [ + [ + 'OS=="mac"', + { + # Linker flags: + 'ldflags': [ + '-undefined dynamic_lookup', + '-Wl,-no-pie', + '-Wl,-search_paths_first', + ], + }, + ], # end condition (OS=="mac") + [ + 'OS!="win"', + { + # C/C++ flags: + 'cflags': [ + # Generate platform-independent code: + '-fPIC', + ], + }, + ], # end condition (OS!="win") + ], # end conditions + }, # end target <(addon_target_name) + + # Target to copy a generated add-on to a standard location: + { + 'target_name': 'copy_addon', + + # Declare that the output of this target is not linked: + 'type': 'none', + + # Define dependencies: + 'dependencies': [ + # Require that the add-on be generated before building this target: + '<(addon_target_name)', + ], + + # Define a list of actions: + 'actions': [ + { + 'action_name': 'copy_addon', + 'message': 'Copying addon...', + + # Explicitly list the inputs in the command-line invocation below: + 'inputs': [], + + # Declare the expected outputs: + 'outputs': [ + '<(addon_output_dir)/<(addon_target_name).node', + ], + + # Define the command-line invocation: + 'action': [ + 'cp', + '<(PRODUCT_DIR)/<(addon_target_name).node', + '<(addon_output_dir)/<(addon_target_name).node', + ], + }, + ], # end actions + }, # end target copy_addon + ], # end targets +} diff --git a/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/docs/repl.txt b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/docs/repl.txt new file mode 100644 index 000000000000..94f9dd9a4798 --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/docs/repl.txt @@ -0,0 +1,85 @@ + +{{alias}}( p, μ, λ ) + Evaluates the quantile function for a Wald distribution with mean `μ` and + shape parameter `λ` at a probability `p`. + + If `p < 0` or `p > 1`, the function returns `NaN`. + + If provided `NaN` as any argument, the function returns `NaN`. + + If provided `μ <= 0`, the function returns `NaN`. + + If provided `λ < 0`, the function returns `NaN`. + + Parameters + ---------- + p: number + Input probability. + + μ: number + Mean parameter. + + λ: number + Shape parameter. + + Returns + ------- + out: number + Evaluated quantile function. + + Examples + -------- + > var y = {{alias}}( 0.8, 1.0, 1.0 ) + ~1.448 + > y = {{alias}}( 0.5, 4.0, 2.0 ) + ~2.057 + > y = {{alias}}( 1.1, 1.0, 1.0 ) + NaN + > y = {{alias}}( -0.2, 1.0, 1.0 ) + NaN + > y = {{alias}}( NaN, 1.0, 1.0 ) + NaN + > y = {{alias}}( 0.5, NaN, 1.0 ) + NaN + > y = {{alias}}( 0.5, 1.0, NaN ) + NaN + + // Non-positive mean: + > y = {{alias}}( 0.5, 0.0, 1.0 ) + NaN + + // Negative shape parameter: + > y = {{alias}}( 0.5, 1.0, -1.0 ) + NaN + + // Degenerate distribution when `λ = 0.0`: + > y = {{alias}}( 0.5, 8.0, 0.0 ) + 8.0 + + +{{alias}}.factory( μ, λ ) + Returns a function for evaluating the quantile function of a Wald + distribution with mean `μ` and shape parameter `λ`. + + Parameters + ---------- + μ: number + Mean parameter. + + λ: number + Shape parameter. + + Returns + ------- + quantile: Function + Quantile function. + + Examples + -------- + > var myQuantile = {{alias}}.factory( 4.0, 2.0 ); + > var y = myQuantile( 0.5 ) + ~2.057 + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/docs/types/index.d.ts b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/docs/types/index.d.ts new file mode 100644 index 000000000000..4bc26283d1dd --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/docs/types/index.d.ts @@ -0,0 +1,135 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/** +* Evaluates the quantile function for a Wald distribution. +* +* ## Notes +* +* - If `p < 0` or `p > 1`, the function returns `NaN`. +* +* @param p - input value +* @returns evaluated quantile function +*/ +type Unary = ( p: number ) => number; + +/** +* Interface for the quantile function of a Wald distribution. +*/ +interface Quantile { + /** + * Evaluates the quantile function for a Wald distribution with mean `mu` and shape parameter `lambda` at a probability `p`. + * + * ## Notes + * + * - If `p < 0` or `p > 1`, the function returns `NaN`. + * - If provided `mu <= 0`, the function returns `NaN`. + * - If provided `lambda < 0`, the function returns `NaN`. + * + * @param p - input value + * @param mu - mean + * @param lambda - shape parameter + * @returns evaluated quantile function + * + * @example + * var y = quantile( 0.8, 1.0, 1.0 ); + * // returns ~1.448 + * + * @example + * var y = quantile( 0.5, 4.0, 2.0 ); + * // returns ~2.057 + * + * @example + * var y = quantile( 1.1, 1.0, 1.0 ); + * // returns NaN + * + * @example + * var y = quantile( -0.2, 1.0, 1.0 ); + * // returns NaN + * + * @example + * var y = quantile( NaN, 1.0, 1.0 ); + * // returns NaN + * + * @example + * var y = quantile( 0.5, NaN, 1.0 ); + * // returns NaN + * + * @example + * var y = quantile( 0.5, 1.0, NaN ); + * // returns NaN + * + * @example + * // Non-positive mean: + * var y = quantile( 0.5, 0.0, 1.0 ); + * // returns NaN + * + * @example + * // Negative shape parameter: + * var y = quantile( 0.5, 1.0, -1.0 ); + * // returns NaN + * + * @example + * // Degenerate distribution when `lambda = 0.0`: + * var y = quantile( 0.5, 8.0, 0.0 ); + * // returns 8.0 + */ + ( p: number, mu: number, lambda: number ): number; + + /** + * Returns a function for evaluating the quantile function for a Wald distribution. + * + * @param mu - mean + * @param lambda - shape parameter + * @returns quantile function + * + * @example + * var myQuantile = quantile.factory( 4.0, 2.0 ); + * var y = myQuantile( 0.5 ); + * // returns ~2.057 + * + * y = myQuantile( 0.8 ); + * // returns ~5.591 + */ + factory( mu: number, lambda: number ): Unary; +} + +/** +* Wald distribution quantile function. +* +* @param p - input value +* @param mu - mean +* @param lambda - shape parameter +* @returns evaluated quantile function +* +* @example +* var y = quantile( 0.8, 1.0, 1.0 ); +* // returns ~1.448 +* +* var myQuantile = quantile.factory( 4.0, 2.0 ); +* y = myQuantile( 0.5 ); +* // returns ~2.057 +*/ +declare var quantile: Quantile; + + +// EXPORTS // + +export = quantile; diff --git a/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/docs/types/test.ts b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/docs/types/test.ts new file mode 100644 index 000000000000..afa5e5c9e8d1 --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/docs/types/test.ts @@ -0,0 +1,119 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import quantile = require( './index' ); + + +// TESTS // + +// The function returns a number... +{ + quantile( 0.2, 2, 4 ); // $ExpectType number + quantile( 0.1, 2, 8 ); // $ExpectType number +} + +// The compiler throws an error if the function is provided values other than three numbers... +{ + quantile( true, 3, 6 ); // $ExpectError + quantile( false, 2, 4 ); // $ExpectError + quantile( '5', 1, 2 ); // $ExpectError + quantile( [], 1, 2 ); // $ExpectError + quantile( {}, 2, 4 ); // $ExpectError + quantile( ( x: number ): number => x, 2, 4 ); // $ExpectError + + quantile( 0.9, true, 12 ); // $ExpectError + quantile( 0.9, false, 12 ); // $ExpectError + quantile( 0.5, '5', 10 ); // $ExpectError + quantile( 0.8, [], 16 ); // $ExpectError + quantile( 0.9, {}, 18 ); // $ExpectError + quantile( 0.8, ( x: number ): number => x, 16 ); // $ExpectError + + quantile( 0.9, 5, true ); // $ExpectError + quantile( 0.9, 5, false ); // $ExpectError + quantile( 0.5, 2, '5' ); // $ExpectError + quantile( 0.8, 4, [] ); // $ExpectError + quantile( 0.9, 4, {} ); // $ExpectError + quantile( 0.8, 5, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + quantile(); // $ExpectError + quantile( 0.2 ); // $ExpectError + quantile( 0.2, 0 ); // $ExpectError + quantile( 0.2, 0, 4, 1 ); // $ExpectError +} + +// Attached to main export is a `factory` method which returns a function... +{ + quantile.factory( 3, 4 ); // $ExpectType Unary +} + +// The `factory` method returns a function which returns a number... +{ + const fcn = quantile.factory( 3, 4 ); + fcn( 0.2 ); // $ExpectType number +} + +// The compiler throws an error if the function returned by the `factory` method is provided invalid arguments... +{ + const fcn = quantile.factory( 3, 4 ); + fcn( true ); // $ExpectError + fcn( false ); // $ExpectError + fcn( '5' ); // $ExpectError + fcn( [] ); // $ExpectError + fcn( {} ); // $ExpectError + fcn( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function returned by the `factory` method is provided an unsupported number of arguments... +{ + const fcn = quantile.factory( 3, 4 ); + fcn(); // $ExpectError + fcn( 0.2, 0 ); // $ExpectError + fcn( 0.2, 0, 1 ); // $ExpectError +} + +// The compiler throws an error if the `factory` method is provided values other than two numbers... +{ + quantile.factory( true, 3 ); // $ExpectError + quantile.factory( false, 2 ); // $ExpectError + quantile.factory( '5', 1 ); // $ExpectError + quantile.factory( [], 1 ); // $ExpectError + quantile.factory( {}, 2 ); // $ExpectError + quantile.factory( ( x: number ): number => x, 2 ); // $ExpectError + + quantile.factory( 9, true ); // $ExpectError + quantile.factory( 9, false ); // $ExpectError + quantile.factory( 5, '5' ); // $ExpectError + quantile.factory( 8, [] ); // $ExpectError + quantile.factory( 9, {} ); // $ExpectError + quantile.factory( 8, ( x: number ): number => x ); // $ExpectError + + quantile.factory( [], true ); // $ExpectError + quantile.factory( {}, false ); // $ExpectError + quantile.factory( false, '5' ); // $ExpectError + quantile.factory( {}, [] ); // $ExpectError + quantile.factory( '5', ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the `factory` method is provided an unsupported number of arguments... +{ + quantile.factory( 0 ); // $ExpectError + quantile.factory( 0, 4, 8 ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/examples/c/Makefile b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/examples/c/Makefile new file mode 100644 index 000000000000..c8f8e9a1517b --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/examples/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT 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 # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := example.out + + +# RULES # + +#/ +# Compiles source files. +# +# @param {string} [C_COMPILER] - C compiler (e.g., `gcc`) +# @param {string} [CFLAGS] - C compiler options +# @param {(string|void)} [fPIC] - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} [INCLUDE] - list of includes (e.g., `-I /foo/bar -I /beep/boop/include`) +# @param {string} [SOURCE_FILES] - list of source files +# @param {string} [LIBPATH] - list of library paths (e.g., `-L /foo/bar -L /beep/boop`) +# @param {string} [LIBRARIES] - list of libraries (e.g., `-lopenblas -lpthread`) +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler (e.g., `gcc`) +# @param {string} CFLAGS - C compiler options +# @param {(string|void)} fPIC - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} INCLUDE - list of includes (e.g., `-I /foo/bar`) +# @param {string} SOURCE_FILES - list of source files +# @param {string} LIBPATH - list of library paths (e.g., `-L /foo/bar`) +# @param {string} LIBRARIES - list of libraries (e.g., `-lopenblas`) +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) $(fPIC) $(INCLUDE) -o $@ $(SOURCE_FILES) $< $(LIBPATH) -lm $(LIBRARIES) + +#/ +# Runs compiled examples. +# +# @example +# make run +#/ +run: $(c_targets) + $(QUIET) ./$< + +.PHONY: run + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/examples/c/example.c b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/examples/c/example.c new file mode 100644 index 000000000000..2922e0b26e9e --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/examples/c/example.c @@ -0,0 +1,43 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/stats/base/dists/wald/quantile.h" +#include "stdlib/constants/float64/eps.h" +#include +#include + +static double random_uniform( const double min, const double max ) { + double v = (double)rand() / ( (double)RAND_MAX + 1.0 ); + return min + ( v*(max-min) ); +} + +int main( void ) { + double lambda; + double mu; + double p; + double y; + int i; + + for ( i = 0; i < 10; i++ ) { + p = random_uniform( 0.0, 1.0 ); + mu = random_uniform( STDLIB_CONSTANT_FLOAT64_EPS, 10.0 ); + lambda = random_uniform( STDLIB_CONSTANT_FLOAT64_EPS, 10.0 ); + y = stdlib_base_dists_wald_quantile( p, mu, lambda ); + printf( "p: %.4f, μ: %.4f, λ: %.4f, Q(p;μ,λ): %.4f\n", p, mu, lambda, y ); + } +} diff --git a/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/examples/index.js b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/examples/index.js new file mode 100644 index 000000000000..f5620fa51aa7 --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/examples/index.js @@ -0,0 +1,33 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR 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 uniform = require( '@stdlib/random/array/uniform' ); +var EPS = require( '@stdlib/constants/float64/eps' ); +var logEachMap = require( '@stdlib/console/log-each-map' ); +var quantile = require( './../lib' ); + +var opts = { + 'dtype': 'float64' +}; +var p = uniform( 10, 0.0, 1.0, opts ); +var mu = uniform( 10, EPS, 10.0, opts ); +var lambda = uniform( 10, EPS, 10.0, opts ); + +logEachMap( 'p: %0.4f, μ: %0.4f, λ: %0.4f, Q(p;μ,λ): %0.4f', p, mu, lambda, quantile ); diff --git a/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/include.gypi b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/include.gypi new file mode 100644 index 000000000000..bee8d41a2caf --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/include.gypi @@ -0,0 +1,53 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A GYP include file for building a Node.js native add-on. +# +# Main documentation: +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Source directory: + 'src_dir': './src', + + # Include directories: + 'include_dirs': [ + '= 1.0 ) { + return PINF; + } + // Establish an upper bound `b` such that `CDF(b) >= p`, while keeping `a` a lower bound for which `CDF(a) < p`: + a = 0.0; + b = mu; + n = 1; + while ( waldCDF( b, mu, lambda ) < p && n < MAX_ITERATIONS ) { + a = b; + b *= 2.0; + n += 1; + } + // Bisect the interval `[a,b]` until it can no longer be halved in double-precision arithmetic: + n = 1; + m = ( a + b ) / 2.0; + while ( n < MAX_ITERATIONS ) { + m = ( a + b ) / 2.0; + if ( m <= a || m >= b ) { + return m; + } + c = waldCDF( m, mu, lambda ); + if ( p > c ) { + a = m; + } else { + b = m; + } + n += 1; + } + return m; +} + + +// EXPORTS // + +module.exports = bisect; diff --git a/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/lib/factory.js b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/lib/factory.js new file mode 100644 index 000000000000..8230d614fef1 --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/lib/factory.js @@ -0,0 +1,77 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var constantFunction = require( '@stdlib/utils/constant-function' ); +var degenerate = require( '@stdlib/stats/base/dists/degenerate/quantile' ).factory; +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var bisect = require( './bisect.js' ); + + +// MAIN // + +/** +* Returns a function for evaluating the quantile function for a Wald distribution. +* +* @param {PositiveNumber} mu - mean +* @param {NonNegativeNumber} lambda - shape parameter +* @returns {Function} quantile function +* +* @example +* var quantile = factory( 1.0, 1.0 ); +* var y = quantile( 0.8 ); +* // returns ~1.448 +* +* y = quantile( 0.5 ); +* // returns ~0.676 +*/ +function factory( mu, lambda ) { + if ( isnan( mu ) || isnan( lambda ) || mu <= 0.0 || lambda < 0.0 ) { + return constantFunction( NaN ); + } + if ( lambda === 0.0 ) { + return degenerate( mu ); + } + return quantile; + + /** + * Evaluates the quantile function for a Wald distribution. + * + * @private + * @param {Probability} p - input value + * @returns {NonNegativeNumber} evaluated quantile function + * + * @example + * var y = quantile( 0.3 ); + * // returns + */ + function quantile( p ) { + if ( isnan( p ) || p < 0.0 || p > 1.0 ) { + return NaN; + } + return bisect( p, mu, lambda ); + } +} + + +// EXPORTS // + +module.exports = factory; diff --git a/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/lib/index.js b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/lib/index.js new file mode 100644 index 000000000000..60e827992b3d --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/lib/index.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Wald distribution quantile function. +* +* @module @stdlib/stats/base/dists/wald/quantile +* +* @example +* var quantile = require( '@stdlib/stats/base/dists/wald/quantile' ); +* +* var y = quantile( 0.8, 1.0, 1.0 ); +* // returns ~1.448 +* +* var myQuantile = quantile.factory( 4.0, 2.0 ); +* y = myQuantile( 0.5 ); +* // returns ~2.057 +*/ + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var main = require( './main.js' ); +var factory = require( './factory.js' ); + + +// MAIN // + +setReadOnly( main, 'factory', factory ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/lib/main.js b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/lib/main.js new file mode 100644 index 000000000000..79910c27d9f7 --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/lib/main.js @@ -0,0 +1,96 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var bisect = require( './bisect.js' ); + + +// MAIN // + +/** +* Evaluates the quantile function for a Wald distribution with mean `mu` and shape parameter `lambda` at a probability `p`. +* +* @param {Probability} p - input value +* @param {PositiveNumber} mu - mean +* @param {NonNegativeNumber} lambda - shape parameter +* @returns {NonNegativeNumber} evaluated quantile function +* +* @example +* var y = quantile( 0.8, 1.0, 1.0 ); +* // returns ~1.448 +* +* @example +* var y = quantile( 0.5, 4.0, 2.0 ); +* // returns ~2.057 +* +* @example +* var y = quantile( 1.1, 1.0, 1.0 ); +* // returns NaN +* +* @example +* var y = quantile( -0.2, 1.0, 1.0 ); +* // returns NaN +* +* @example +* var y = quantile( NaN, 1.0, 1.0 ); +* // returns NaN +* +* @example +* var y = quantile( 0.5, NaN, 1.0 ); +* // returns NaN +* +* @example +* var y = quantile( 0.5, 1.0, NaN ); +* // returns NaN +* +* @example +* // Non-positive mean: +* var y = quantile( 0.5, 0.0, 1.0 ); +* // returns NaN +* +* @example +* // Negative shape parameter: +* var y = quantile( 0.5, 1.0, -1.0 ); +* // returns NaN +*/ +function quantile( p, mu, lambda ) { + if ( + isnan( p ) || + isnan( mu ) || + isnan( lambda ) || + mu <= 0.0 || + lambda < 0.0 || + p < 0.0 || + p > 1.0 + ) { + return NaN; + } + if ( lambda === 0.0 ) { + return mu; + } + return bisect( p, mu, lambda ); +} + + +// EXPORTS // + +module.exports = quantile; diff --git a/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/lib/native.js b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/lib/native.js new file mode 100644 index 000000000000..61e12065e2aa --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/lib/native.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Evaluates the quantile function for a Wald distribution with mean `mu` and shape parameter `lambda` at a probability `p`. +* +* @private +* @param {Probability} p - input value +* @param {PositiveNumber} mu - mean +* @param {NonNegativeNumber} lambda - shape parameter +* @returns {NonNegativeNumber} evaluated quantile function +* +* @example +* var y = quantile( 0.8, 1.0, 1.0 ); +* // returns ~1.448 +* +* @example +* var y = quantile( 0.5, 4.0, 2.0 ); +* // returns ~2.057 +* +* @example +* var y = quantile( 1.1, 1.0, 1.0 ); +* // returns NaN +* +* @example +* var y = quantile( -0.2, 1.0, 1.0 ); +* // returns NaN +* +* @example +* var y = quantile( NaN, 1.0, 1.0 ); +* // returns NaN +* +* @example +* var y = quantile( 0.5, NaN, 1.0 ); +* // returns NaN +* +* @example +* var y = quantile( 0.5, 1.0, NaN ); +* // returns NaN +* +* @example +* // Non-positive mean: +* var y = quantile( 0.5, 0.0, 1.0 ); +* // returns NaN +* +* @example +* // Negative shape parameter: +* var y = quantile( 0.5, 1.0, -1.0 ); +* // returns NaN +*/ +function quantile( p, mu, lambda ) { + return addon( p, mu, lambda ); +} + + +// EXPORTS // + +module.exports = quantile; diff --git a/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/manifest.json b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/manifest.json new file mode 100644 index 000000000000..4e419a8500f9 --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/manifest.json @@ -0,0 +1,84 @@ +{ + "options": { + "task": "build", + "wasm": false + }, + "fields": [ + { + "field": "src", + "resolve": true, + "relative": true + }, + { + "field": "include", + "resolve": true, + "relative": true + }, + { + "field": "libraries", + "resolve": false, + "relative": false + }, + { + "field": "libpath", + "resolve": true, + "relative": false + } + ], + "confs": [ + { + "task": "build", + "wasm": false, + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/stats/base/dists/wald/cdf", + "@stdlib/math/base/napi/ternary", + "@stdlib/math/base/assert/is-nan", + "@stdlib/constants/float64/pinf" + ] + }, + { + "task": "benchmark", + "wasm": false, + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/stats/base/dists/wald/cdf", + "@stdlib/math/base/assert/is-nan", + "@stdlib/constants/float64/pinf", + "@stdlib/constants/float64/eps" + ] + }, + { + "task": "examples", + "wasm": false, + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/stats/base/dists/wald/cdf", + "@stdlib/math/base/assert/is-nan", + "@stdlib/constants/float64/pinf", + "@stdlib/constants/float64/eps" + ] + } + ] +} diff --git a/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/package.json b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/package.json new file mode 100644 index 000000000000..cf6c9b91cd1b --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/package.json @@ -0,0 +1,71 @@ +{ + "name": "@stdlib/stats/base/dists/wald/quantile", + "version": "0.0.0", + "description": "Wald distribution quantile function.", + "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", + "gypfile": true, + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "include": "./include", + "lib": "./lib", + "src": "./src", + "test": "./test" + }, + "types": "./docs/types", + "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", + "stdmath", + "statistics", + "stats", + "distribution", + "dist", + "probability", + "quantile", + "inverse", + "cdf", + "univariate", + "continuous", + "wald", + "inverse gaussian", + "inverse-gaussian" + ] +} diff --git a/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/src/Makefile b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/src/Makefile new file mode 100644 index 000000000000..2caf905cedbe --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/src/Makefile @@ -0,0 +1,70 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT 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 # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + + +# RULES # + +#/ +# Removes generated files for building an add-on. +# +# @example +# make clean-addon +#/ +clean-addon: + $(QUIET) -rm -f *.o *.node + +.PHONY: clean-addon + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: clean-addon + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/src/addon.c b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/src/addon.c new file mode 100644 index 000000000000..8adc00a6fc16 --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/src/addon.c @@ -0,0 +1,22 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/stats/base/dists/wald/quantile.h" +#include "stdlib/math/base/napi/ternary.h" + +STDLIB_MATH_BASE_NAPI_MODULE_DDD_D( stdlib_base_dists_wald_quantile ) diff --git a/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/src/main.c b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/src/main.c new file mode 100644 index 000000000000..83d1d328db80 --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/src/main.c @@ -0,0 +1,103 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/stats/base/dists/wald/quantile.h" +#include "stdlib/stats/base/dists/wald/cdf.h" +#include "stdlib/math/base/assert/is_nan.h" +#include "stdlib/constants/float64/pinf.h" + +static const double MAX_ITERATIONS = 1e4; + +/** +* Bisection method to find the quantile of a Wald distribution with mean `mu` and shape parameter `lambda` at a probability `p`. +* +* @param p input value +* @param mu mean +* @param lambda shape parameter +* @return evaluated quantile function +*/ +static double wald_bisect( const double p, const double mu, const double lambda ) { + double a; + double b; + double c; + double m; + double n; + + if ( p <= 0.0 ) { + return 0.0; + } + if ( p >= 1.0 ) { + return STDLIB_CONSTANT_FLOAT64_PINF; + } + // Establish an upper bound `b` such that `CDF(b) >= p`, while keeping `a` a lower bound for which `CDF(a) < p`: + a = 0.0; + b = mu; + n = 1; + while ( stdlib_base_dists_wald_cdf( b, mu, lambda ) < p && n < MAX_ITERATIONS ) { + a = b; + b *= 2.0; + n += 1; + } + // Bisect the interval `[a,b]` until it can no longer be halved in double-precision arithmetic: + n = 1; + m = ( a + b ) / 2.0; + while ( n < MAX_ITERATIONS ) { + m = ( a + b ) / 2.0; + if ( m <= a || m >= b ) { + return m; + } + c = stdlib_base_dists_wald_cdf( m, mu, lambda ); + if ( p > c ) { + a = m; + } else { + b = m; + } + n += 1; + } + return m; +} + +/** +* Evaluates the quantile function for a Wald distribution with mean `mu` and shape parameter `lambda` at a probability `p`. +* +* @param p input value +* @param mu mean +* @param lambda shape parameter +* @return evaluated quantile function +* +* @example +* double y = stdlib_base_dists_wald_quantile( 0.8, 1.0, 1.0 ); +* // returns ~1.448 +*/ +double stdlib_base_dists_wald_quantile( const double p, const double mu, const double lambda ) { + if ( + stdlib_base_is_nan( p ) || + stdlib_base_is_nan( mu ) || + stdlib_base_is_nan( lambda ) || + mu <= 0.0 || + lambda < 0.0 || + p < 0.0 || + p > 1.0 + ) { + return 0.0 / 0.0; // NaN + } + if ( lambda == 0.0 ) { + return mu; + } + return wald_bisect( p, mu, lambda ); +} diff --git a/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/test/fixtures/julia/REQUIRE b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/test/fixtures/julia/REQUIRE new file mode 100644 index 000000000000..98be20b58ed3 --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/test/fixtures/julia/REQUIRE @@ -0,0 +1,3 @@ +Distributions 0.23.8 +julia 1.5 +JSON 0.21 diff --git a/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/test/fixtures/julia/data.json b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/test/fixtures/julia/data.json new file mode 100644 index 000000000000..2a0e8c871ac2 --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/test/fixtures/julia/data.json @@ -0,0 +1 @@ +{"expected":[31.1849937628144,32.353429666736254,3.5574700899115927,0.303545523922711,3.4943486952303098,1.752699419002886,1.4224542179021278,2.279427917289996,25.78685776419433,1.4523407181680732,3.774250386067455,1.8805649429712201,11.729325759303736,25.386971618207674,5.038700155763644,2.414422144925928,21.214658389067903,4.372671274592796,1.5090856619005533,3.646678569775936,0.9754052069790013,2.51712464877093,1.7400914024452572,4.566346926414732,0.7607078807218044,9.45905672580028,6.673788377627789,1.1922463959179719,28.184331626808046,1.6949603527229076,2.0350527084301566,0.41439718920905394,2.435942182668483,55.3244967491039,9.537792267452131,2.9504423781546913,2.5635810454022505,2.251355384397011,2.2652991935828166,2.4201894316416923,111.28419340143057,3.797288053456816,1.2033426645774123,2.898151986132035,0.1798660931461614,0.8039427600184378,2.4266195685815113,0.8593973049969583,2.921600855296095,2.9703656487595804,0.9278312742245999,0.1591272311381323,3.4387293417729197,3.0459869489446194,8.766505552660664,9.35098388461043,1.909832281229179,1.393240956560729,1.2835922617326894,7.320635946591163,10.68976976772124,1.9399766388816555,4.250738899395575,0.9678732389695317,6.48748218274661,2.71814076278305,6.110442100549476,2.616993222544486,15.737862623054093,2.673804839484348,2.925957730040082,0.4197771514193169,0.9365466037169369,2.3330452182386368,1.7641468446873372,4.266061255000835,4.691629187665628,1.2998083321797398,10.297430739325556,21.803443752084448,0.14569361858534055,0.28622508545615966,1.3941744236130786,1.91973482254773,4.63224290155435,6.665087658327695,0.6894627613830352,0.5225977693932771,14.87831751664091,7.711096116404329,1.078422510268533,7.795590061641682,5.264903657615201,0.7159954419630872,1.3821905034343298,5.015346932351354,2.5706296111539726,2.71899126112933,2.4544552269213087,1.379263087870365,1.221669836225823,0.3962357805719951,17.251342522993035,1.9245844012881428,2.7316218079370445,1.362302568743372,19.02162107835024,1.6823630087120065,9.79560962050951,3.289300698850813,7.769959252586376,0.7465547862200541,6.816310523058141,4.212607041175537,1.0039214894190938,2.0121288798043047,3.9117339007524343,0.6229629082450184,4.992193618787468,1.4156524176326393,3.3610520324737507,5.159882842176139,0.38319698501064087,0.9904776853172397,48.701097315779585,4.116358406185474,2.2628044348469643,4.36070221413771,7.8866502193424814,2.3936510150172996,6.700021156153765,1.7834167175928786,11.24908101014596,16.661983717651843,0.7224477449789466,2.495915531040161,0.9062874384139787,7.46085354856872,21.1858230320987,4.3906097279141765,5.319942736294628,1.4456023567053677,16.090697660183952,5.009223837067961,4.3119192917487785,4.606138459642289,2.160635105184719,10.16247434306071,3.3214861061493104,17.131184631730147,2.0563823965788015,1.890011367461497,1.3589870644403397,1.3717549165275296,2.254539835329598,4.5424434016001225,0.5908499978751652,25.449305159460952,4.9718315507184805,3.7876893196519767,5.784186096289818,2.3281165810617246,6.331289887507009,2.389983273722856,3.4714778981562127,1.7173034344103442,7.46742532447676,0.5653630511760476,19.358937030271342,0.6714607662660066,1.6337481981748148,1.7119662550558528,2.7871788713066654,5.206668394555712,0.9334564289858075,23.90889646007978,0.7523866620498755,4.310328062575018,7.602529198767791,2.6268961501604995,2.335585573273854,3.659416820033225,0.14373775974343525,3.467399617881688,0.5442620734141482,36.11251515670439,2.200558549066709,3.4760434392333286,5.572723114580993,0.9862070493682212,0.30642869565048414,3.7515116685456182,5.256318702760135,0.40074759735664434,1.5040223305995368,19.711489129448186,64.37279425173351,5.327634396475278,5.67138833165903,3.947279187343796,0.5850082375554402,0.7584726423559888,2.2313375730287444,1.9435298187428505,3.036653712642425,1.6472267193098844,1.30901680119942,2.8021834857598535,1.2574727738838798,0.27904328822882846,0.3673666799976075,3.697822522113078,9.938003672143136,13.218276484910424,9.485707547782232,0.49230467199605427,0.15409454374459675,14.01673031899467,2.0854470039814195,1.7469249259336066,0.07823660353044062,5.861647204019021,2.428262757005268,0.4902141207306745,2.7412725297263965,0.8479068004463872,14.569043018508614,1.694696011740304,4.565408400348916,3.9908674313314805,0.49365963663970436,1.254585816314509,4.508466440789848,5.03700800917187,0.24656613574794714,4.010954134983307,3.5663061799002254,0.8928189695473856,2.3917504092088135,15.948928082641338,0.7121459519502313,0.9504343847974236,0.5730689435073144,1.2630058565174822,0.4169290617215914,2.870178001542263,1.4952100027060253,1.5076891920439537,7.407224551716813,2.2996351682464047,3.9223220271418455,10.153952148384937,5.076454003590245,0.46498441838494425,0.16076618061250125,1.0925142248125446,3.1706725770617665,7.1177400234240205,0.8381782263333886,3.174249519105638,4.959785978715749,2.2428073058139484,1.283869520460373,8.948499666729324,6.253808948367518,0.9879988380948074,1.124118126749581,52.81936064881966,1.7593241200193774,13.41654833855621,8.229858362068013,2.2884105282382783,4.673971263343997,1.751918067029422,7.066600573673285,1.9741289293162025,2.786093571161192,5.74088595600608,3.358629203776863,2.2302399939851196,1.0046627289222598,0.40915007082850796,3.894089506520778,3.5070908204256366,2.450987732504969,4.54588745946823,4.463762156768217,2.9815703933997475,0.4164856829499095,1.6579492679627077,1.4562694071010638,0.48735163979629625,0.43138143376243243,1.3793290189871925,0.933931815204871,4.227555382316686,4.069497399467801,5.842058022144388,0.4679270397451639,0.499661184092751,0.8936495447864926,1.555027390362985,0.5465846537314607,3.3369469235854057,0.2275397831143499,9.654986239450968,2.6031768261432298,0.3915765979410879,1.3347519739387148,0.4720261622044724,3.111150549886618,0.32931067806934544,4.6830288034635625,1.6787716178227248,1.0520510506107104,4.4251158071605285,0.7803282233589883,0.02871186253451492,11.20571051641666,5.351004525358495,5.921350823403956,0.8205205199778125,1.9378569392395795,1.7134598655328062,1.4943555027554363,7.953713926920303,8.441357536333374,0.2539934588851126,1.0827604139294913,1.7086642672665435,0.6710231948858042,1.0490889117020814,2.0663335309673734,25.89682630427623,0.327048609854195,1.752204626221382,0.7106976705471354,0.4711051694642737,2.9431547270963203,2.856477386766311,59.45787061484968,1.2721085726499117,0.805340099708265,0.6141156905248236,6.36572393031225,2.7864379488080235,1.675799531720739,0.9491268983016042,1.7037113838103555,0.2999655492181127,0.4749993489455276,1.2612611650990044,1.7301001665594555,2.058238145575809,5.617853378561461,0.8224024087040006,3.8580274854679613,3.679639075617007,0.7413949194610409,2.354417122509124,1.2509774428631328,5.761519429845733,6.075651121612945,7.618964410715078,4.450800601853359,5.879002626827352,1.2148066297876254,0.3995746209575435,10.086983818359121,14.55912447499739,5.598207473574207,0.8086794023333875,5.685621541510874,6.894134804549214,0.21330334149980829,1.085530159041689,0.3018081031702594,6.133745762300397,2.1854743658172344,0.9158997571799757,2.9837836796895765,0.5374072581528055,1.550451419097663,4.877176068388998,0.5509224552738253,6.666043410412692,0.16213018540113808,0.8252496039253893,15.201054863195015,6.5459517979860244,4.1578471143247455,2.5000870004971314,13.586908435057135,23.100936339019345,3.5487802364567163,28.489250633636974,8.94894986295906,9.091439104103138,0.488875527975274,1.4193156783827034,10.50340869249011,0.8918934502995204,0.8513665384218524,0.7053558889459727,6.588439182036175,0.16748176761327419,5.312855303142087,6.089967438089839,0.9903768355263435,26.393222911647587,0.3691468463767765,9.811420686050308,1.0897480743337684,9.5160451671044,8.162276904245248,2.0680536860832506,1.9805596370482934,5.572215670564574,2.0085739269565583,11.651616053730603,1.3463986477438363,4.675152963541527,1.7696677686457167,6.7198270212031,2.7112917182461582,17.513959422582655,39.57616902783644,4.146387160017114,3.193336688681276,4.28310135343936,1.89131949145336,2.2668918722771445,32.8866688664946,4.787228030974859,0.790585947372048,1.4996028624956441,25.74696139189394,2.620606400700231,1.9206278981478737,1.0120282219829555,3.4639227955820315,4.681068892770919,1.5121074142031572,26.281176632022206,4.098237967345795,0.9893743351051874,1.2190147473001576,3.7601630090794664,4.6487972141746186,0.6022007691185527,0.29947910113769116,9.778810003339471,2.5668029142880364,3.142881465375947,0.8845906454848342,10.554422418889313,24.683623485007107,1.8364921563103969,6.964756790829922,1.3429332130740381,8.471604394740725,14.868418363808772,0.9792109410049236,13.85789720309311,5.263325561404422,2.16297539629913,1.6053251731440035,6.193265596713095,11.142270359707627,3.934819725365458,0.8653287129400473,7.284084885523499,0.5901812370947271,0.17233206579897517,3.7088029286485544,3.5381598880056826,8.633885889361602,0.21746533739677718,2.8781087008927972,8.045106263302067,0.4787604548373866,2.590356593330368,3.6550199569994826,0.9228938964640886,11.517946803664705,0.7978865385221702,2.908549552956718,0.771055619804822,16.21303454868374,1.6510312590897531,1.3749939435614438,6.6470109221906855,4.544516087605225,1.4111824225332015,2.3035091676474884,0.4348846168957594,24.363086116627766,19.350043258550315,2.096772835313901,37.745595358770046,1.041594520194443,0.99358084408896,4.198778688996654,3.4061670408177083,6.064255248245231,1.4561456021837573,0.22359462791762025,0.7645394799534301,2.31690448685813,0.1736107742384186,9.66170831769908,4.228024887353806,1.6040127723404793,4.738760169304936,6.409329676505278,11.303626696244693,2.1077956222605785,1.2603683139447315,7.115324051427469,3.5750508853857212,1.1489998466605766,0.8161113316863569,0.20515341829731595,0.6223016585643216,4.86039503987414,0.9196158367682409,0.9262393316355699,26.77888384675061,5.006311314306759,1.5511192901897153,0.7180052611334609,2.430901983672001,12.460742874106417,18.65604901219931,1.5834472084434024,1.164260595695364,9.216267859324999,1.9122061957730545,0.3134407893306749,2.5750144565731357,0.0871543259223501,10.607313965467288,2.725879236853443,2.482041064715509,5.696256729532905,0.6521653733318591,1.3853452179154788,0.9263732456057514,2.906488366483593,2.1869040547770666,0.24365504385947648,1.7987278967905944,1.1106828249859115,6.090947483764687,12.737175057559968,6.488838777665734,2.041274068761118,5.274530115002138,3.3101853740271436,0.21115893932904242,7.63230695016746,1.6353904865631783,1.0192181003384981,7.7467362939577775,131.76308653415586,5.569947485646688,3.9039237585505187,7.14772588496627,3.090189031906313,0.3465839695899245,3.788155389173156,0.2272660405870119,3.487970382027815,1.8538592415704527,0.24537279929568945,3.5714329482943414,16.491491008585783,5.312402878669748,0.3419967244311314,1.4718466975850628,0.6510065039446101,1.1882677642121147,0.8876647904352062,2.8870104539940966,0.8775772362995176,6.443190577458451,2.157462421624759,1.0234120129593725,0.5297294750752928,1.1534128070006247,2.546854787335565,8.8675392216176,3.4906337112046746,0.9094185925784568,1.0804039371106986,3.5153390333756964,1.1080880612747759,20.68478890417249,2.095002023777633,0.07802151490360061,0.9223343431011385,2.0077155199008505,0.33573869605914386,9.574858485922586,0.7128671702486464,0.9919934043201205,1.731649760842733,2.222201405623024,9.101120317192956,1.106362110071837,0.9514395123163568,29.604613369483225,1.6234092978648968,24.395554463824354,35.00747214581209,0.29115259842891866,0.32398378892466173,3.0726458289037755,3.995492954392665,2.801796846482254,6.858931740318429,6.753607011914893,4.560349114942216,16.71190151208711,0.5056118831503319,5.754896976888108,6.291809488259275,0.8191954105916222,0.5869249938446369,1.6546928785601378,5.229161630169819,2.5499801881852835,1.7552446492530527,8.411266334377048,0.8640675448688483,6.612360288846853,2.883474021233724,2.175434463151921,2.4820154575114226,2.14578838440471,2.0778090649924676,4.214882703590225,1.4161111976286238,0.8138803386762316,0.9360987232426,0.28423411079481514,0.9840254700165444,11.15136255615284,0.30241212150530955,1.3111560960229374,3.65422982174056,16.13560134333974,1.7239089163610561,1.1313524205709515,8.124792371588175,1.9856522479797103,8.839191535326567,4.620022939276383,3.3290184298722503,3.067476730236608,1.3241494184546776,29.44330383664943,1.0491445199227842,48.35101762212626,1.2880443665724293,2.8793140048957033,5.433489390430714,5.867236660797449,2.167951184977174,9.36214014567284,7.285076879313943,12.490994837090785,4.964642727641563,0.5249911534755599,3.1709598435857305,2.8153571025367725,3.4822616719194674,1.50441550773853,20.344203795662846,2.6402829787016637,8.435124084499641,0.10663160457397762,4.588790390223088,0.8523629928856169,6.9849291764892305,5.287129849002105,3.993462634370262,1.3322112583200525,0.5921722102919896,3.6862127324930833,3.4531251739370825,0.6857247940830128,6.426914830043087,4.834046545458826,3.6470251712576403,1.0378318036072611,1.738025083752672,1.874968855007371,1.611880970022903,5.662109344467769,6.263141239993985,2.9489349722559615,1.753079133452297,9.83820518744074,1.117485921850753,2.0626134312907833,9.502795855502765,1.5686965372568584,2.263546614877975,0.7631598228966904,7.392260116946033,0.29329894787751687,3.6196423094862538,6.387198725264791,1.1015192627508834,28.46194850156291,3.800756954742886,1.6231213279875214,1.4219881929672091,0.445024716446726,0.6560677543158391,1.899215207166451,4.050062061682539,14.681994648107775,2.797791073084533,10.768461537088818,7.484010801376247,4.970563186644908,1.8865475930185562,1.4409936188865504,0.4883477565276825,1.964235408614574,1.8075254141526833,0.18413996743504962,1.9048644511191937,4.687633132924518,0.11991390228635145,4.874846562610574,2.241959811983349,1.1655539667038675,1.6870739064641873,10.966814764172705,2.4628107771122507,3.2738904698259477,2.2042447276117083,1.167694177981831,5.499864446434239,5.200478014291763,5.260674730479285,0.0889921768710553,0.3453895332335434,11.922051013012545,8.455358662867972,0.8021014574996049,1.0996533088423581,2.207044137177701,2.3940375810343664,12.254857959190762,4.670542381899224,0.8123214828660458,16.825693638478022,0.33043587673870634,10.361437995022248,2.2380712841805184,10.727386969540524,1.687160240350407,2.1070025060304083,0.5551105648593881,0.8423736873275315,4.409804702105626,0.22948305152346007,15.033831369757447,2.4842421774767844,1.0045072409187434,3.8665034951463,15.298383786362246,2.453974364628855,0.35949939789680896,8.37200254512322,20.016386454725186,2.4488156196081206,0.37808923423247104,0.10990038824594828,3.4448382822821233,1.5944955455787544,0.4792546579306147,0.5776098962277219,2.9694625103979337,2.7167546680084644,6.86729251393536,0.5598593593673302,1.159408046519752,4.135387660547362,3.2705682089974473,13.895926279354299,3.315894394847108,0.18737156684303155,1.9989119135637026,2.7328615678725625,7.89718329399055,1.168600654835051,31.69555889151332,5.104952740847157,1.890647301710698,0.6963737720916574,2.916452747316124,24.614146381835162,0.42796818330025965,3.299245223738142,6.473497534790083,0.1592860421196478,0.6616584609926294,4.135859635947895,4.167614752321941,2.1745342875893616,3.3794114441788965,1.994550232408442,3.1445578826468537,7.971174432310838,2.6123681986010188,2.1741441377655057,1.196302279720525,4.604412264586055,5.924823502581338,5.267296738263617,3.313960695782839,0.6195704469452064,9.979640896055908,0.830800427198892,0.5956972822982313,0.5129416478207401,0.6577127553700342,5.124172368331776,36.01671339848208,1.4467723997867121,2.3534433102784593,6.55261691093713,13.884478744306811,5.5028015324663775,0.1393307852731414,2.7109349140554126,4.594275286751114,1.7749795554095806,1.362219244419733,18.965099025788135,1.062340073218225,3.178158115795849,15.038881898032479,1.1687887531891585,13.304708664914534,0.9019250678270716,1.1152749265057151,0.5089854649604542,4.47522615674254,0.669699052805754,2.5907535854446824,0.278154679491652,1.4066421541883747,3.7223752613048213,0.8511955150343173,0.3251023617494583,0.6500233157439094,0.1978698180522618,11.839194981300023,1.953706005710313,3.828351328865498,4.731799811499502,0.7192923045436231,14.950909973082668,1.1842740451454767,1.9291167441648107,0.5106175487178072,1.8397501449477607,9.693927570982822,2.1040115091513214,11.894189692738514,2.659985695500992,1.9808969822235747,0.792480270994838,9.361684566063873,1.780369317873526,1.0709969870197056,3.604867856054484,0.6645318591071322,15.543274815164912,1.9680482308087799,1.399166303012199,3.575955506919246,3.106195207492099,0.49326879063071266,4.627045375290385,10.409900511730843,3.18784397304445,6.117302601851945,4.813243511643655,0.275763049192696,1.3900735362626016,10.329927796699351,2.82699681513115,4.95822047577246,4.806554313590156,1.508874797956232,23.243505355798217,8.4120557578396,2.471268691286051,0.725724066261745,2.844662560380313,0.9956343047363218,0.4994489992534302,1.802566077987364,6.060125641210766,1.845319649064376,16.109979737275367,2.7314680889870724,6.035541354693921,0.7173781785225669,3.1701042861113824,0.4506494369498114,50.05126539604463,0.3093366729795062,2.0832127403690497,0.2419620874861812,0.18490442027690024,2.8392331290630652,17.414613780275292,0.8260866412159138,0.994866526998302,0.9984243142989657,3.126199511931082,0.8959519315030869,1.9990190260907887,0.9139387915725855,28.988140423159948,3.7313911846298713,2.4403456074735703,3.9630456242772576,4.457858077788088,1.8480201618809673,5.451548052934982,19.89335118025564,3.195917638140918,8.940301620355003,1.8049217942211648,0.2430609597285231,4.188793315030555,7.104286888756254,5.352625812482952,5.073376578998575,11.510751389758186,1.6936064088641785,4.219866514523248,1.7594310947586627,2.999896889243279,3.6534934990219403,1.3308342190651106,0.3907583253486459,3.8510404709840267,31.22607806208787,1.444678527249046,2.1549904637484967,1.937701642933978,1.741710248100978,1.6232791378696538,2.321805675790636,3.471348610266799,14.275172022434624,1.2675556186169854,1.0367961214185188,0.40061178506306233,2.250590463649805,22.975897118835103,0.17244138488643165,1.5436014917033891,1.6804947628809916,1.064897956364793,3.7555684919081886,4.442855651124392,3.9333509582381443,1.7096629638166905,8.427384136336546,2.5146912785024242,1.4757688191080427,0.6760788112005889,0.3762941137752658,1.2139069617827516,3.049883813211932,1.1093362672894997,1.1192597549992664,11.102077267470627,1.3875905090759277,9.038558094219193,10.585395146323792,0.11978615301206313,2.0357657866504586,1.1254716488019056,1.2606188218833976,6.311973637156028,2.6318279739178885,1.2605531792024045,0.5931819257363294],"lambda":[6.6822920505110215,9.820741568922703,6.765213493666474,0.45026932497656647,8.797113956734018,5.058620871685149,2.9020658775760553,6.075090615669922,4.346186270537023,1.6823156669742723,7.37691176686767,8.045684296615551,6.149972733913485,3.5061964162120627,8.791244735138278,4.454683942837981,2.442152792084181,2.400779454944346,7.25838290409836,4.925044080665127,3.1523805380327654,7.232760310345546,1.6237052162077947,9.489720024870978,0.47996076535299903,7.343004569368894,1.999681989344716,9.57574883795994,3.9318844342697368,7.946978387995733,3.6370032497728455,4.556003830019517,10.098752322923973,5.05287204190461,0.9416756449772422,1.6266199981826357,6.357534477800862,2.814774344339832,4.550899091379897,9.345773985959493,3.3742401025952815,6.201267989259766,1.5780357597230987,4.184109671315971,0.3315968782013622,2.369871628458774,6.838900001552139,4.797440014068485,8.43002622620267,7.811968764756372,1.0214397027920497,2.4384117606803755,3.2486204924506166,8.474408973860017,5.286658564726883,6.554009641654811,1.8115088002480562,7.175117995655485,4.3243501223513,5.64284387458029,6.263322328155716,5.901234204174138,8.843298125790449,3.8544339297903254,4.63364685626692,9.421477734790487,9.466536665357332,5.301012493290675,3.6129190497637165,8.425405594031805,8.018274429566084,9.379139277354621,8.663755988289314,2.729535600266407,6.697092481772858,7.1369969827682365,5.973403055120362,6.671128954663252,5.105413426136514,7.866495492036828,0.4436206892938698,1.5105634806865698,7.578056990514887,2.716551489153105,8.63356862472961,9.584079043283204,4.583611322758678,4.126895534540565,6.28160763044864,5.457653487887188,3.0987309421927867,6.2045443847139286,9.170993941283193,2.731179588295841,3.6475805112643855,8.328479304199211,4.424119047877498,3.9389904973675596,2.726089418959632,7.618151892159937,9.290222811899959,2.464455626828602,6.265454150246185,6.5973477136484355,5.294739753403023,0.9800486394694295,8.36260017460463,1.321819179309992,4.051939783134442,5.731725780601559,0.1443687141311422,1.242594443757038,10.015101997716071,2.9779852282115082,6.91764754219806,7.7391607205182265,8.147620142710732,8.602481191662394,5.979329716149049,4.6032967038803925,0.841352372883427,9.2039762283831,4.205380040390049,3.448033857602145,2.113974498116772,3.8916869750049177,3.8876167958103114,6.790456469828443,5.650196124188841,9.993202889836324,4.443221110525471,7.9629600143349855,7.321943887130349,4.450096635249409,2.4861624238028956,10.085800888035186,2.9650773651380278,8.201285658842785,1.2795453074759322,3.660428750749878,3.361556443130215,9.378609945187522,4.070047369595146,2.8837926562151472,5.794674641070387,9.168672225239932,7.6921580836915275,3.3885392108507726,9.457210108340457,0.42030613351611057,4.360383183748985,4.051430851875913,9.168155888961534,9.875060259534488,6.716346794469576,9.679810867825179,5.712524261586933,4.750385840997668,2.401079350715912,8.760322315594957,8.769458664888305,8.428065878394086,3.434211068174051,5.000409119083373,5.046428259448129,5.13852047106611,4.948430853952572,1.0907791755834295,1.0725428246081015,0.649449456877773,7.786941230553699,7.016824396633522,3.8860364324312022,3.1653090553695673,9.590658976148822,7.096591610145474,3.2572389945575364,1.1081723915311514,2.8589309169583834,5.491787013372862,6.241212538915965,5.189921836900829,0.8576991119099507,8.212560339445098,3.4700706424311756,5.72631722286138,3.3715466753628944,6.454204766846743,4.858530480824686,7.810257670135925,2.860443401763836,7.264716373693158,4.52898339615456,9.000330715609728,1.5854204366154112,0.8597035514283501,5.658564166796603,8.856766086065155,5.3759984132762675,2.317895478252686,8.960653894497373,5.68445926301945,9.777646911009134,8.724409550950778,5.751167362530927,9.85322162384555,8.835535177554624,6.549230475611065,1.707859786626068,0.8860920043543351,7.392330543910898,4.223764841366051,5.193722829121293,7.210054056113767,9.68592945996539,0.11190613109701811,2.2849786389738203,4.010781228640178,4.795380081779579,7.562891548802637,0.17415054711633174,8.682344721334916,6.102119474431256,1.0869309752382927,4.642430276405651,5.37279653043168,4.34061407718106,3.096213661204099,4.110569594387577,6.362328792791599,1.3236778788667058,2.482586209236599,9.437052054582148,2.561436379070473,0.6483689603592756,9.488833650975288,6.5192217671581965,0.8280082850703262,0.7061307581489072,6.39844862734936,8.044580177076465,6.378022906690536,4.195657751858997,1.5300342030102498,2.657721047261979,10.007755486666321,5.391858169657894,8.21714536476457,3.3697541327416034,3.6049148100405506,0.8783298258130056,5.992481339787324,3.9518659596922343,5.112955301477701,0.8092641539029198,0.6632755256249455,8.957649679914091,1.7690882563957,8.801254497264276,6.661383246864821,4.182788023587755,1.2106766990263096,7.346993065728277,8.964439192795206,3.226743271454645,7.190748872182378,8.695858772855827,0.8673145851080609,2.875046219967784,0.612481824500518,8.748471756232275,8.684815744996643,8.052686111499272,3.6526415558328442,7.1750803445200715,8.491718650976757,5.323058799157231,4.3681519727628855,9.739391345948741,5.138795818406058,9.910659193523346,1.6375075274457729,2.929687715080586,10.091792540279098,5.167248373546842,5.150364895156857,6.274306024940997,6.988856663040443,1.5116136789821866,4.4701393169346675,2.144860243006239,3.6438143502452003,1.1190907943563866,0.9060825336469868,1.8865738432148738,8.735249714824615,8.224397761841692,6.565995147495434,3.6943049125605554,7.4343810468115805,1.6504839353918854,4.434590566045259,1.213563575055543,8.541969907413396,0.44544342509761015,7.1446515977074885,8.926699369693841,2.6289418779447304,3.2119894428375595,0.3181709094596984,6.448371507827868,0.4022702108473518,9.805908995885561,5.914097094065204,4.389522774566893,8.844670232693757,5.842022101521407,0.16831648368626376,8.46675607492074,6.576801276687977,2.8482643992013257,4.496757470356162,2.636900266983022,3.354777118449205,4.847359786986779,0.6203607937250121,4.471946216377857,0.4036897950458972,5.2664854032839346,4.02298757495368,7.907354126244398,7.008620215119398,0.9118428821769674,1.184722393690012,2.1755022313604013,2.234203700345052,5.364370893698573,2.3176914665546655,2.8223272182408663,8.517966021810459,9.056627904490165,3.708499758757453,1.9939427957648947,0.5784590521540344,7.3336183381565485,4.183611479846709,2.2240460590624003,0.8921079373077577,6.567584708822942,5.6892537837713455,3.337991553333753,5.342512900032746,4.946820280992389,3.3392428329538704,6.331506176301793,3.4132739621653885,8.23816701895501,7.192362195150339,3.6481788400691273,8.057896319057138,7.109864192178114,1.5481605115460195,4.683212453579101,3.9138005318623126,2.8751415066830934,2.4988163005108386,0.2937121422536114,8.780552847657395,7.799896704143634,0.14959568262503767,9.832329174348972,1.3003901051438904,2.4932016929989165,1.2031337474521353,0.4061754065306177,2.1785874867342403,7.588231893899658,5.982688932774453,3.023440905979169,9.764760587292487,4.443977401256563,9.09972794555491,4.513059660326608,8.552690024187877,1.028273064481423,6.204778396162774,2.4356290823568103,6.516002496592051,6.636712454462999,4.719192565857272,10.0571012221752,8.296019577510036,4.773248008452732,4.015208048152573,1.5897506237387249,6.393638522034994,6.120036868038907,7.8483441722150555,0.5991706827113007,0.10709768157954538,8.808728027897983,3.0423992411468426,1.3647499855630485,1.6692320024484542,5.933961441147673,1.0449280340581124,7.308902013517719,3.840141682298029,4.5802457677707205,7.641678285869302,8.806822276416787,3.000555205709885,5.732873143283388,4.23203767274572,7.443762279107758,1.4016986133121834,6.3536342184400905,5.189184068705872,6.142772827564864,8.9698252074654,8.14311391635942,8.12854536841812,6.368648745390264,9.846183297475763,4.378338552387374,3.288144026233454,8.383205397961584,2.90006095858649,8.31442600313333,1.3244973634375168,5.879401171938474,8.750419953599492,3.9697496433448367,0.3311082728030611,2.712213358686222,7.5122267214794824,2.2134017263405026,6.080170429266248,6.6992516094930625,5.174067497903172,2.653340640331342,3.798075613921652,7.772297332454758,9.913273483142024,7.62893034132626,2.976856403396364,1.53680570873998,2.893700727155497,3.3661985834027908,8.895640693209218,4.059364685124598,2.433258034137323,4.5577363368117645,9.708797783027183,6.871388687157551,3.8127063414705034,9.239988654325684,4.4285478115641475,6.530273949806798,9.768787294745627,9.429797938460364,0.7658724327645737,8.204394648260346,2.6633060764429684,6.808733820927024,1.1258059511872187,6.499464019292862,1.986683317516359,5.582274056959123,1.1077410637482465,8.241122979393824,6.004463566660993,6.024085648159977,0.5030967268246987,10.023596126641062,6.355569585649441,8.046142838475092,6.328314108392947,3.606498471984856,1.5746816750103698,1.26952449245877,3.3769787335310375,9.129342700844585,10.032706232498407,9.291721767441144,1.3713811115560992,0.11811070932124071,1.950086589864084,3.3612376784867792,4.39035279809741,0.2758448757956776,6.74901412199236,1.8994190091299068,5.099702311817487,4.385822362642434,2.6773367722515307,6.726136582306228,4.4566317710456715,7.922076480446273,5.987385403080879,9.696646683761205,7.880184415704505,5.635370100458848,8.32105882823092,7.786742671554305,3.1260705097306594,3.10272099809467,7.3097899869571235,8.162556115460836,0.538937517227167,3.635682678929156,6.744376973050291,2.5544479817303123,1.0785265989829163,0.7720462247744807,3.757613456742558,1.0994287787124557,9.645197601276198,2.013129641429104,9.358987173582632,7.793597607576005,0.7674799363080208,0.5520787737869125,1.9664564884204472,7.552678632721879,8.697520595235767,1.4826586997082858,2.935945801068286,5.202115696217427,1.7401255719189457,2.3826879205761498,2.6791183358498114,9.580885940163169,2.7900010449687307,7.989568878041992,4.178428720279687,8.716107119091939,0.5521506456108681,1.4961710181428733,6.303460691101336,0.8583447884449157,8.2095444788765,8.00363301254319,9.102064135522815,0.6738404160957022,3.5945305416575155,10.02475546397918,6.06877313886014,6.387653959344254,5.079794634879784,9.28566916854093,5.752533435215594,6.447753296108855,7.1807617342332195,9.971792216781873,5.075860963213412,4.482031017510578,6.116430458193039,4.564649119102199,0.35142213581749615,6.393234045920299,9.203415789903957,1.3653371625009947,5.88101731844108,2.0088923051960483,4.230289875916237,5.443855069982355,9.547465130709535,6.657899467208439,3.264142350864486,7.816556140681401,1.8184341060260478,0.8131328192075759,1.2772307286637707,0.5337223866668316,7.511725826206825,5.376817292549176,9.821307819824762,0.2622363585233044,6.977598707694393,5.4659683557509515,1.6043673173942141,4.315827230431987,3.46824696277372,3.4553177659222354,9.669617600231284,2.3019780431593104,1.3438946809081176,0.6383291237882825,5.954945099729251,9.492261509964719,1.5865306483027775,4.447005475905925,4.533027424636836,4.723812930926928,6.212969150741348,1.4970911078060023,1.6958692277958154,7.926490572293371,0.28637820690743265,1.3128830514920442,5.458499501044765,0.5106560444868279,5.3910830040216915,2.9147707439480475,5.4641173814653445,8.643781827887333,9.343723858653263,9.65416438096729,8.25575307018747,4.484172313044448,7.099721858514943,2.734981728925976,6.06727872954677,5.259765135745302,5.044639490447082,0.3590275097044836,0.5394430920558156,6.105548587709082,6.51821668761635,0.7918624851698718,3.4936978615508605,9.894918105024411,7.56354101376526,1.3372822622807945,3.141864667288973,1.6715558412737686,3.22938754560655,1.2581431538752774,8.953083063804934,7.443264739752957,0.5409908789655481,3.504781126524532,9.870342935729598,9.120106829961873,8.605953686338825,5.8423558264293955,7.361269266666177,6.84907024426171,9.693875166149029,3.4315574755569656,4.045965178080593,1.733904016502068,1.2908711089335234,3.3589389521142086,9.267789869260222,2.3732371196911504,2.7498405152629792,2.112231641846655,2.6047846313278398,6.4271536291409195,9.205673207707681,4.351722603394782,3.3776540412776446,8.383573775587374,7.006648163303717,3.9936893637445094,5.933597910061985,3.7078611167633335,7.004589004550786,4.501793104390997,4.637779970574381,5.7840700789080355,2.9127849010266513,7.917953111069656,8.910731043546543,9.190316899795304,6.6899331042134005,4.233115839512433,5.496757434730673,6.667159787281563,2.5354059812244523,9.076558455738642,3.640650337830461,6.051014851337275,2.5392772178589795,9.266486157841832,6.996609199677747,1.4143274626498592,4.303122778802934,7.609357540040807,0.18824042330367044,0.8613381726210078,5.778793521183412,4.2640758804450405,5.921617014736128,6.690067288930282,4.109697277399622,6.762677254001585,4.167349760622037,8.834207456050132,2.892215133248701,5.823515643200793,7.5818603158771545,8.967668984067302,5.919225087966267,7.785675216414011,4.395279994400855,8.044594011507375,5.523159329331868,2.9084090244867844,4.8305858933907935,0.7783949541367862,7.367268443013255,2.0041952495261017,5.12804813327897,6.6243241091505,4.770390661262644,6.920752204201936,4.534467983472934,4.3127348563640675,3.054507063150648,4.114339731058054,2.6879266330778084,10.047120297060827,2.259766174858817,9.402405476510472,8.621836243699217,1.2727496557477624,4.044487614021575,2.5797271684475445,9.889857086738056,3.557423844753179,3.3657468090502394,1.541350776315512,0.7137333689667545,9.60003130294832,5.415517018629579,8.344642617061142,5.178904500300614,3.046180908966263,4.821416433181301,1.5706507829498084,2.324278997327124,2.1868998598645963,7.18717835405931,1.4822958386051188,8.688318885327533,3.303913465276803,0.5248584353058349,4.522158652001382,6.635358775140881,2.489713193924965,6.29213395833677,6.650255047824162,8.792081657645868,2.9472725685537884,6.988890574586365,8.831274330465511,0.13941937232090687,5.021666310743665,9.45883567296244,0.49273030238079596,10.051410521360772,0.1651392224378833,5.526990532603099,5.378437803068025,1.7061717993666004,9.115785883172904,5.893091464785204,5.86656923324537,8.10756783229742,8.211966264060434,5.665914364167435,5.2464646102519445,6.350094065533518,1.1755037485008346,6.729562687538185,7.616486729624515,9.57089932462847,4.9214925744090285,6.467554763029833,5.339255204812554,4.74651971337351,4.657765589603848,7.444375343124207,3.4331064226443684,0.5923982055557707,7.400958990874001,4.664592086438591,9.136800531779325,0.48658641814772075,3.2857637239637083,7.733406526783467,9.366714057785531,7.649627463374665,4.359254628015761,1.588063294170845,6.436741547219466,5.174982114322993,8.84314044913265,5.3034692598487,5.5945834570553945,9.319791959833411,4.807801148254361,9.455110276148652,0.4452864435670377,5.949963915283425,6.790737081422702,2.5394304659055025,3.2479243769032773,5.248838677226753,8.612411011065266,5.527092556989321,3.6873208615928954,8.637520205502202,8.42887997088055,0.23123094671275482,6.574223463814335,7.023386050398106,1.1616942085063886,9.39255124294812,10.034022748934548,3.041953221626499,4.504950510268754,8.782842533309726,3.6288146081902317,3.2323760580733607,5.858159483397862,4.376681735287573,7.026794024456294,4.712140508869394,10.00549197775725,7.843051530648955,3.9988153567046267,6.06761773196195,6.575443854639701,7.007226098455413,3.4054732747828487,8.49644435002608,4.2608257299230905,2.7739562144334107,3.169019164126016,6.041239636655866,9.921733773736293,4.549339617588631,1.4711258981965858,5.26499697001765,5.281355008764214,3.404119907531572,6.9956531079534905,9.554048906249687,6.708088902664743,4.655460965418396,7.0056319532519,8.132741502471621,10.023078145486968,5.471838958935698,6.002521943885461,2.194523172221253,6.034947507759559,8.719030164407252,7.382078349251376,7.871019811034358,4.937999861565016,1.1825846340302903,0.10992981145409578,1.5628887934395574,6.3290374289352185,0.640700394725746,1.4961748493367333,0.8512523518254355,0.3099125165194704,7.269827687698216,1.6016127382618184,8.320327283680271,8.705892189994305,0.6384350478845656,5.940219964304877,5.630920476610317,9.277973864745956,7.382941889090771,1.3541785966902131,6.126508911470727,6.985538095002167,7.977947189964693,1.743292096557103,9.220479591565187,5.064663228648217,9.949220275886645,2.2095355832200503,9.873246662898024,8.303738333352257,8.11863387420503,1.2431839863046579,7.282919175791017,0.6058476614071172,2.250956503990822,2.413367235551964,2.1432320861334198,1.3481938750970313,1.1871350208404496,4.2980577832646105,6.348959393390051,0.534800449811562,2.6298481524706974,1.2533022346270761,2.9773321982053624,2.455243622344455,6.941524989915635,8.67759409071505,7.803069792711614,5.234378948635152,6.075826837599543,6.438277445266605,0.9182495534642375,6.191344911794652,7.067906519578072,1.7844733061607843,5.989985243930673,5.019966209400548,8.71730153165306,3.884229403160296,1.389733804662645,7.678957752296862,7.327332774360957,9.209892982160074,3.0730655966907636,0.5676725252506997,0.7415196302435866,8.625946031249722,0.33055832348638947,1.1667406997529373,5.134251244164459,7.660089563193463,0.15425511666261152,7.550419883914886,5.592962467891786,3.3348387419860157,2.367459697946878,6.075136671181669,9.877692412000187,6.285109533986139,6.004287431976087,8.588806854418651,4.221620098083087,9.114113718332199,4.140058359999399,7.920523709715463,6.302715986834789,8.982897783343198,2.1268827417155167,0.9076822060339839,1.552092653910243,8.84557586323613,9.972651109274112,5.058374990224348,4.79580898204763,9.063166199444952,9.27479475379992,8.545282746400561,5.91118810900009,4.796420531267532,3.2884417726866366,3.121096328577304,4.978097598758486,5.360879006607978,7.999033231702991,1.8233752628611755,5.660976543939919,8.376575580712359,5.232049153790915,2.1592728909335857,5.298635466484954,9.43159750680277,1.427787583176503,2.8673207746411777,6.866780795723983,2.6477011834667974,8.950219305650789,3.5229926580762894,9.60691000758449,2.060874113545146,5.29804729838696,3.1326571674316663,6.757663373744179,7.497298740947744,1.3658613605755177,3.8058798757683134,4.111440823135136,6.92716109952524,1.0219586402207281,6.375472168785638,7.10246404101005,7.349721980669741,0.48581002783931837,2.7181776525010304,8.590260104597325,2.6712928423689997,2.180727542809482,5.693065107542346,9.019714035061456,0.1551705391454027,8.08812813503646,0.6899334620726815,5.209710417401386,6.818836322930138,9.822297965497942,2.7564320543455567,3.2904749628306207],"p":[0.9941134027715103,0.9792946370010002,0.34442187772254496,0.25709771781141477,0.6011168855183286,0.1788211470474519,0.27471521636191243,0.44365869962102156,0.9257841831882611,0.3524892884537112,0.711956827496396,0.6891473374477929,0.7488870208064551,0.9733466831229461,0.39033795712475616,0.6664778295989691,0.8996306684370001,0.8455469969518409,0.07900189069541097,0.5167172097802425,0.10518870036707328,0.9049211877510821,0.40612637256404605,0.49713616070970745,0.45707250079510175,0.768042480514684,0.8190217921680828,0.1565975005744321,0.9972302793503202,0.07884790584229506,0.2723775249137511,0.5685749982278027,0.6031801827887464,0.9935958542872589,0.9906942118832162,0.6674653974783914,0.22612073048302284,0.7403429588430556,0.39153218464895634,0.21276620694241588,0.9993342592464589,0.7487395489827745,0.4099363089929027,0.43490028971079553,0.18039897451860432,0.26786026894741943,0.35242564249189745,0.041730765332249176,0.23587710258159977,0.4002140366373199,0.37676707594643366,0.7609503328622436,0.5996208718451945,0.4876123967662961,0.691395873943133,0.8368281751340875,0.5742957568648014,0.1378065899793508,0.10585822165406233,0.7198683424674674,0.7435680581223262,0.17935551214849643,0.3318415623737616,0.07666031357223313,0.6699562228316,0.16538933878565332,0.47142026843115836,0.7227296323928962,0.9577091689637184,0.1876917926311148,0.5665420800250606,0.8187986762785294,0.01593665382562559,0.5405989480368273,0.6024012743220114,0.6970787269783715,0.6628467326388465,0.8859663739369124,0.9582475005487596,0.8998529595141268,0.08843038283681981,0.08287045212953836,0.6747309824874324,0.34852953335082304,0.9004515427100931,0.514991201948161,0.7360614425585789,0.22707493019021951,0.858552426303663,0.6875377636135471,0.12511655527059085,0.684648568082244,0.43364863671699805,0.09007759742148069,0.1603262458072714,0.43868220053608553,0.4448211791794764,0.3619057182652561,0.8325342598170271,0.06321240913285342,0.3755132182631583,0.13612433725460138,0.9192404010572351,0.1334012657419954,0.6255595870736939,0.8044613136243424,0.8720646387967156,0.43278921081988997,0.8848464116553263,0.3382216681459568,0.9059349902535615,0.24103828330596322,0.6651483107221616,0.5828119881568995,0.15015988168186079,0.6471784465477681,0.4119488556469073,0.005579901865730097,0.9399534788197922,0.23268481183493928,0.6799592944667306,0.40656758425612427,0.0019076623676235194,0.10050132611533169,0.9776143170900036,0.5957826526368729,0.3390467335170434,0.5967154005904362,0.8042572327246711,0.4150088454214612,0.7860687717217583,0.9482137138458289,0.9666392234045932,0.841886813810829,0.10390763294279004,0.2882087087971493,0.10747123080426169,0.9281446327559114,0.8986339866389838,0.5083807846764565,0.7204890792033491,0.033888765520961206,0.9653495240667717,0.7292825477071636,0.6245557435113767,0.35564710444774517,0.12080157097297461,0.7889763123178383,0.5283764569721136,0.9401088317399905,0.2176541419310648,0.4421572547728695,0.034455131552720064,0.10327858394406586,0.4061312299271397,0.44954944807750474,0.07992313603103762,0.9861991601742147,0.934879794426345,0.35797410195367474,0.5265643488963339,0.4895569878225856,0.6729910303818483,0.279006470795103,0.4118611860820752,0.3280532330625672,0.8038325408311793,0.19014941915855432,0.8903741502871113,0.35482674282023585,0.669541313932176,0.19881310846264855,0.39335152421568986,0.9230683511612622,0.7344146555288482,0.9117438296674626,0.2511985018168029,0.7900351711910281,0.8217123027016697,0.7249363119526229,0.3771060754136454,0.3989650259634422,0.019369539819985127,0.42591077630509544,0.3590508136113796,0.9812439157597972,0.6222922617946964,0.3789969993979436,0.5681775930284999,0.31706018931429314,0.5235869960642121,0.7948964017405332,0.9152370298110728,0.3895758982775773,0.37771214976583456,0.9187613637520657,0.9937502106625397,0.6354756574203778,0.7039179823056421,0.7338295374306171,0.23939702149978137,0.010830224974863634,0.5166480405185891,0.10480645858371185,0.3171953041927815,0.06606997033964057,0.5719440269382196,0.6274220697441832,0.29337546483700894,0.08549505890764497,0.9644414596340837,0.5872651743467302,0.7569506155567313,0.8343130803280536,0.9000643363620142,0.6429830074266469,0.3548686536509311,0.812276452458392,0.2816286907053145,0.0761907451040198,0.16084352355040554,0.7947796159909597,0.5158542543410936,0.31023500845079666,0.6654296872153453,0.027601731365129223,0.8431057506265173,0.2511417041117323,0.845467183591587,0.8182947205130869,0.1157200099730904,0.9061257487668536,0.7416862052762244,0.7863449399389245,0.12095665017966184,0.363794826591187,0.5003253061232927,0.3646334635465718,0.6468461640762947,0.8402568208747861,0.22435392357362038,0.1229837360291367,0.11734175616847287,0.3218450292121472,0.024066897091716388,0.2435778730477497,0.3888659232930376,0.10751500918989687,0.6778617265377606,0.6208382291419124,0.734642712462019,0.8809496387583541,0.5757016352883076,0.03156311313577198,0.02790976379825716,0.5834591945071973,0.859920267664072,0.8447946381829572,0.050412055879929696,0.27493913820838045,0.9482525734711748,0.5789262443477678,0.11563232068231899,0.7745123533906959,0.6376561578276378,0.1067380042186884,0.02530987552566244,0.9912126405250207,0.27614042209574186,0.9026594877302809,0.6335947458172004,0.15058717025417256,0.9273160147643087,0.2760090335924701,0.5784210683138601,0.13780957166884156,0.35736714367607214,0.6676388754909837,0.23696322467323216,0.3781209533061186,0.9863522195487627,0.05498503658669507,0.8682539621897385,0.46388764797345483,0.23854291496605817,0.4955928491176792,0.5497994148180599,0.5835388579823175,0.1975202870367263,0.717699045805563,0.3146287587061254,0.11972622231354102,0.16182220871495034,0.7812320336298558,0.2810570743140697,0.7764961154962825,0.6034926364331065,0.5488756815574822,0.18303702728137206,0.013301044489172353,0.23581687165191423,0.18836906486919536,0.4968909457658177,0.5418467506481792,0.1732085637069647,0.9575263036000312,0.15550546965779588,0.020673182762767195,0.2443934988314811,0.4291094290280508,0.6967380745667384,0.2949390547087709,0.44766615455526537,0.2802740328601151,0.09228726391597708,0.5349530310851699,0.018010285458047393,0.015863126289109464,0.9107687324582014,0.5283698973878258,0.6358564710912735,0.33831264287714313,0.6868858843234635,0.5524274217746542,0.3389898493357112,0.9331911106852132,0.9136166348022472,0.21611964512838477,0.3540620921604618,0.29402717027101366,0.15208416359517773,0.04690156031660064,0.6258039237985054,0.9403861985359171,0.041806018042916615,0.6322352252606792,0.30023213347838995,0.5633967239592287,0.42875204913374776,0.6017362104781945,0.9965712630222898,0.15350411115086704,0.1492426517774904,0.5373953714227014,0.705377632814248,0.5140796237673418,0.7519099327261748,0.5020334926162427,0.5510493768020819,0.21824196805776697,0.03675661139503261,0.5876023952278696,0.3124369544473934,0.379649238755959,0.5428497944497926,0.2797088277404035,0.33692059962432275,0.8230138675201233,0.47995074990433206,0.1428772773798247,0.18338646387740343,0.7331364586839862,0.751603364058308,0.6777492161291254,0.7284522644829005,0.8737115326864922,0.6652676127178249,0.8866810620272185,0.8983334836769439,0.9433691566569731,0.4264249849016377,0.7944981513417353,0.7795299602276431,0.9814526223464145,0.23039617919524502,0.2050102408505461,0.002071961327830829,0.5730020740039593,0.9074885077390704,0.14638808135397186,0.5426366858948359,0.16170455039042886,0.253193562416822,0.6916860916390853,0.22971654745260484,0.942351342518711,0.28880343670704767,0.012495143311729073,0.9355959002375228,0.6479839063789342,0.3216261899408972,0.14495618288501377,0.8258786319585673,0.920151406445155,0.59620942240129,0.9803413442324241,0.9817308414670715,0.8177370379825579,0.36752407014416577,0.7979608553017079,0.7215793650625134,0.09190819901239067,0.27062459121390703,0.6781995267159434,0.6184553458850831,0.633756006984887,0.6015248598927956,0.7163840940802373,0.514593822309687,0.9903978058769293,0.20151054966202087,0.7455549149422406,0.8017601298495179,0.7917778710936272,0.7134071623205508,0.4848838553947432,0.6619061866142755,0.5535242905362994,0.37922626234876256,0.9303254211041907,0.034686630283175535,0.40702373347029985,0.49709408002117395,0.7492739029050907,0.5014734291795592,0.9746123275889074,0.9986214291682227,0.5605894651314756,0.6899466201263389,0.6651724458261252,0.27065790032900006,0.3380029868003357,0.9449905355545661,0.8255489823215075,0.0946105374679802,0.6052810464439526,0.9743481257777131,0.2885771366296357,0.17361524433419806,0.19827459584654072,0.6061558562833925,0.5401322386896297,0.601464475772656,0.9807102409324715,0.4351846884435646,0.11013773145982553,0.6047807863611548,0.6106179022076137,0.7616352265736404,0.49372653786254195,0.03176165492367733,0.7850347055766539,0.3131585848087396,0.29167115327917015,0.6857387693558884,0.9048007699373242,0.9901322394864122,0.21378693325101217,0.9794933845369421,0.035636171205516876,0.6351710605999531,0.9352687799793682,0.02052584998104101,0.8379618008024936,0.6191470516400281,0.6736426140535633,0.0908404335760521,0.7621102787613616,0.7691445476844162,0.7062963106459001,0.04264037379828378,0.6215379125068472,0.5239763101435854,0.09954910563940966,0.26222926040791883,0.9315842792697526,0.6375921150019275,0.2766433958310468,0.5556730483444688,0.8404911776586766,0.1210232570827714,0.34719552943967924,0.694462019999236,0.7219944151518555,0.9299635443151918,0.23401199816130114,0.8527888594264984,0.7511316705877755,0.8522835821066203,0.5794650102277974,0.68904679619392,0.5692372946197983,0.688421655469265,0.9053865735362896,0.26117516916271566,0.2751356057826726,0.9204217014531993,0.9559998091597499,0.11996818703665812,0.9802127213823311,0.12485505033220501,0.6233500857441253,0.5844393122245392,0.4857362234845123,0.8921387092513179,0.21595447051996164,0.9717071818575787,0.00446048436983193,0.4591601695378227,0.08399094093749193,0.793454640328461,0.5706354847712413,0.6272816332572552,0.7948705460252979,0.8391878124818872,0.7873248316692855,0.5355975638928865,0.3355179987541167,0.7276613689047919,0.5296587219677732,0.44294572135001786,0.3724495351775178,0.11278754123233992,0.09361609287655437,0.48284853520796467,0.011097755672449638,0.32104875489715057,0.9648396377176143,0.648972678002119,0.350319480739679,0.08764728601863303,0.5633367793983113,0.9811018447285296,0.8795360568237711,0.05400833052320064,0.19984370410233177,0.6478892614177634,0.6312934024453319,0.053663917537062567,0.33838765608245347,0.01815973416335037,0.7230870008509087,0.2660837742967136,0.1437127571287219,0.8851700801074491,0.3608642088607311,0.0799779015716694,0.6446171330430394,0.4863941903420953,0.30062436124226743,0.22967431943687144,0.1408785269269308,0.1605165600052344,0.787101035155357,0.830856985281176,0.5967826205082539,0.21564184786675877,0.6795115080830634,0.3870712407114161,0.20710614654441706,0.7268660305493634,0.3110358409465822,0.3800219456619113,0.7561857301043046,0.999315380704296,0.7396887924660512,0.5598729073962784,0.5460309864067482,0.4086364196119193,0.12642803890900178,0.654925018009681,0.018510543991253514,0.6869259875007105,0.543824959457181,0.15970517179711352,0.547384485469456,0.8566094790884927,0.4842597005243219,0.3919506893358945,0.05880973497863162,0.5661075767541407,0.35280536127200024,0.3123949093913452,0.3866542033094793,0.08096178677776278,0.9403990806019501,0.39752953990379747,0.29703068046423464,0.32634382067036616,0.8436631133737655,0.43770523555857377,0.7834134798210508,0.5405335669485478,0.046751628141304624,0.11007800559667646,0.66066535230413,0.677265861917873,0.8879652844185689,0.32639225844438036,0.057396559834620886,0.4830107587922895,0.674952820696195,0.23276495746286174,0.8736687955381589,0.06133282374164417,0.03199222709165139,0.6461156474707072,0.5693310312704724,0.854855685621544,0.8678294139735407,0.13062204926930254,0.9470457939143974,0.2866543671577383,0.9283632650728794,0.9573923583876075,0.5219463525841395,0.34139656228258364,0.8962402252040743,0.553606190917617,0.3542507289909136,0.8024112794537887,0.7677018800532147,0.3643949485543876,0.9120190743018332,0.16479373508085193,0.645392210358261,0.7681102123435102,0.1576748561156479,0.17542234388665534,0.46995292122839694,0.893141438832287,0.6905179688146281,0.2604037051374124,0.7072473834336206,0.8158571677647757,0.7773323353343701,0.7000258141674855,0.1692929058223065,0.5696072571956919,0.08561116253045986,0.507667286081273,0.7881603748625161,0.7995538997566258,0.23934801212456092,0.08078725224813321,0.9024690685638267,0.22302155094754927,0.8008244490211531,0.7925881784455536,0.38763837031492976,0.555398529167674,0.8691709421011306,0.531348273019444,0.3752177153316808,0.602660566589463,0.16192178077266506,0.8237542550043931,0.47242465926799926,0.5341433755773074,0.9797265234222776,0.294737132238557,0.9561068850953354,0.1775563184880561,0.9844196307475632,0.03116699038731363,0.43153431607740567,0.6351818241159912,0.7703543724978418,0.2727603315008321,0.7077748684933598,0.7719206740738729,0.8252980762913326,0.8747011798317404,0.01574522788668009,0.2921560220662911,0.4411554106188541,0.3417565753203221,0.3913269951367173,0.9288478284648176,0.843328279937008,0.7663586000860221,0.1984161092285499,0.7374938757876719,0.7272666057672028,0.6647725941812483,0.5383600346274651,0.38803020508485864,0.14394838426562806,0.30968211594531236,0.5115618148551002,0.5442943745087285,0.06543474400614391,0.5846739425325979,0.40092114696647796,0.6459115832495743,0.17100020324355636,0.07372173797424963,0.21806357010309618,0.7670006568955645,0.6457867634430907,0.8744490850671884,0.9047559441619692,0.5946524390163579,0.9193617932554785,0.22003694186623368,0.6237301331765552,0.7431315728081633,0.14402087153883858,0.5429216313599535,0.38982932952023586,0.774154810683727,0.2738911459275529,0.6525105406448047,0.6523835666910752,0.18923109917952285,0.9253350621678433,0.27119827454304823,0.05951945305263329,0.410581273413372,0.7488338791510801,0.06672477612240468,0.24969357690124283,0.5700488421077008,0.8296456810191368,0.553838868682985,0.8963014037018953,0.6372731085324522,0.6747073398134772,0.07983399246242018,0.23848240986866664,0.01882867596205129,0.21445908436399275,0.4828751183171005,0.23282033860365348,0.3753121088643201,0.47432069338425953,0.001100205274208843,0.796316020137658,0.47946747839868553,0.6146949135322317,0.1582249884225727,0.7414399419931843,0.47657048176812045,0.3705670710013832,0.17912205047742547,0.3798331532700687,0.6441869447082452,0.5277154303920296,0.582101626144147,0.21406804534357615,0.10888143441101772,0.7932338485625268,0.8677092876847223,0.2848073908784009,0.7767161825232115,0.3666658950807622,0.34937707887988734,0.8459242352697206,0.46429320742090774,0.5569095901377006,0.9225233238083785,0.4384565732047643,0.9797535513277192,0.19567794326959453,0.9132033004077897,0.1231508596327493,0.5217687971239225,0.005062694595220463,0.40097646802480735,0.7510512977434554,0.18265779805944338,0.8383869560725666,0.33753894501617454,0.178390019970193,0.4277093169471613,0.8854178501376412,0.9234272075649586,0.21544767319703606,0.910062488877548,0.9420515759021829,0.12477016127809948,0.2726672388777588,0.645530922919978,0.5819411682948895,0.6533221929696993,0.47683902213032314,0.025160706445057746,0.6509981015809316,0.3315800197491603,0.5947556743225477,0.14103351292749244,0.13248289934381774,0.6333046343440524,0.4058421124971999,0.8297542745964153,0.33859769536793316,0.13397280685042323,0.16505804614910935,0.2598852539235009,0.8802903653796113,0.19205905378258503,0.9771456232363686,0.40823349532900766,0.5524431283046501,0.7820818718225062,0.4783243597395139,0.9579561675535766,0.4774553510233518,0.4631983616701699,0.7241249572649046,0.3860776236555844,0.10173678145092813,0.2895781250444932,0.7482251661464415,0.4659169887579827,0.35353009391473744,0.28217912323648087,0.4987471893277996,0.6339409595796318,0.29185215714181134,0.14855296347365643,0.07791659460594014,0.8493980812068751,0.8564386171707041,0.5883914284956667,0.43107853275560526,0.41860283359787753,0.7046908804718548,0.26718376813176226,0.0016198089025166729,0.01396472800097337,0.12331159931325486,0.7676367985732677,0.9828952930655441,0.10264527968055503,0.8986939843098322,0.8697648843869211,0.8256216255571809,0.7735156649374927,0.644127010332331,0.9961687795709122,0.6442842771798306,0.12428550925045712,0.9692725446735615,0.8731210893552434,0.4240823004386658,0.24066542417583392,0.8502642147776347,0.1895728235974009,0.8587187488932015,0.07910942213202643,0.0836241730558267,0.3728263961571088,0.40128754755802365,0.012070279587952926,0.6149902107478183,0.5604680788716273,0.46520264418010515,0.5393523457549769,0.4218052505561578,0.7986055936755402,0.3888745225001322,0.27221227393255853,0.8570954796214442,0.5811102358439684,0.569088003013428,0.36690739335714195,0.3743285407789291,0.891971174874392,0.1456698932881868,0.20388582940378597,0.006710017434913285,0.5616065926812941,0.7344315774781104,0.17076331065004158,0.8358288744053722,0.5004058539438422,0.23027350225239485,0.5576866211760974,0.8941398605301595,0.3682918486103053,0.43985036851082226,0.3596110340615063,0.08556852383908509,0.8676842888872817,0.17492873622486282,0.5469887290977177,0.55169802226816,0.5630988832919209,0.6027118717615692,0.7118870883256156,0.9370383628175403,0.8678989706876691,0.6953282427907855,0.7980575068643038,0.028870560799930445,0.4031881876077602,0.8210304515918634,0.44341793801976703,0.8116595665711501,0.46235611352904227,0.05664191987542333,0.9325677913819036,0.7732344715344042,0.22514988452637275,0.29746581581726916,0.3308714345262198,0.10768767424413617,0.0760377409452111,0.15863674344949275,0.8984308638784687,0.3654191230052354,0.9093848453979569,0.7026545714810148,0.7402413060678256,0.10865772346922564,0.20000957801641317,0.5747426463442679,0.9608428608976379,0.20326964250661916,0.6546501264188517,0.2614481218208362,0.014017591298737808,0.28490595846510625,0.9362308929777097,0.6765796434090484,0.1975291800961203,0.2600172992674258,0.6340767050483285,0.13714442184651598,0.7110929877407062,0.009464309651394776,0.9474575711336656,0.3696491708780296,0.15851796352781644,0.5551963803099828,0.3820161904922673,0.5028776561597122,0.4499967349236166,0.8759623986831365,0.3099032881662318,0.9610982453037662,0.7127936477913528,0.014747371000451093,0.532357944401969,0.7466153069343269,0.6075064658230555,0.7605580282043569,0.7937414742851066,0.19047040617131328,0.5431401531351112,0.1624576712423229,0.32039143643345946,0.5396256906951338,0.7863730126418574,0.07234051160862154,0.3970565718430379,0.9743499660144861,0.32958861244530935,0.22493333361131074,0.9631652027248855,0.8391978866880893,0.35241272413925384,0.26522815693742763,0.3422904865328228,0.8845253198886627,0.19258103953955552,0.07351841073427623,0.019952307742597597,0.13996226350685392,0.951807575840891,0.0787517883745974,0.4601550747067418,0.3977280584261146,0.9132651046438421,0.5787565684614336,0.508790402638239,0.6354941364804989,0.2064438711643387,0.6965301029006777,0.3300936399601524,0.763450337276674,0.687605894111517,0.4080211562367606,0.11480800837697136,0.7338271660206915,0.3559294041835992,0.1853443568150719,0.8801077617419254,0.5805897298729887,0.6931624952603171,0.7472046010951294,0.2637831519532343,0.26363594388271094,0.47708680784577195,0.074369747468634,0.7467390862783789,0.21773468662391726,0.20209647737159786,0.09692417847949641],"mu":[5.8510852173315175,8.543269990689327,8.123317738663026,3.097363233067384,3.5842228850601865,6.618645404716922,4.462110681098043,3.136707214241364,9.008578966089608,7.09527968294424,3.219742726224791,1.664721802667154,9.94756202317625,5.702097224964644,10.088310090883521,2.2526725077475174,8.768369868115933,2.5662726666636746,6.430516839392438,5.326030978369297,8.018369870724946,1.5465027198762327,7.837894053043124,5.995104052458055,6.878701493524542,7.207830241297799,4.427753410528064,2.0679290276205675,4.058132452617487,7.6166693416239575,8.249465381219556,0.4113093221819163,2.4037472202074817,7.804835228236523,1.4879854234147294,3.5518643116967943,8.482338936635747,1.8223891244069623,4.089463360886647,5.332708878387347,7.293016531453555,3.0146853669612796,2.8600331045891814,5.5563969956886,9.973324472079254,1.7535242435745257,4.100473324981872,5.396353929928385,7.517105360637518,4.555259038039601,3.8540270508350005,0.13835786038601908,4.379766355030389,3.7822655645354932,9.128734318602826,5.740327262603904,2.6766321664564328,3.388152432869287,8.794529388670913,6.500731535952579,9.09077250312499,6.680214986936672,9.472494632762515,7.160102068212227,6.993136445231793,8.594883827299395,9.723207669077025,2.188087576694804,4.650307636061763,8.233196909431044,3.1553951611084927,0.3583598079995286,4.088762301444065,3.354815506921119,1.7504268254654187,3.762750697310353,4.579026728112262,0.8986196605412132,3.6586707097833657,9.824081970943949,4.996742003201177,0.9974009252929693,1.2588222337598687,6.222622408141472,2.6863157126116213,9.517274889119449,0.587018508537197,0.7840172454103777,8.171383913173786,7.7937248631767035,9.031846070303915,7.74365239522897,8.942354549186492,4.488951985348782,7.976878090914533,8.608525161690755,4.230773587394212,7.700511658484236,1.5795228623968516,5.670448875155001,1.4934976766113017,0.8417352809077326,7.080743920540881,8.243061096108347,2.7525455033495594,0.9278775153152851,9.905922151593487,8.86431369458104,4.80295704850634,8.512118256293476,8.62025883679216,5.923577068204841,6.503297779761207,6.790923176808444,1.9087345982847337,1.8797529082105902,6.466366052423049,2.2786628838958776,2.3653651623184113,3.300831536311509,8.060757368859226,9.526947399340285,5.627431317059687,6.7757014813673475,7.535027167707694,5.316571280384999,5.926933971676674,4.844513889319742,5.374837927565262,3.0915009264877145,4.846422676925186,1.06382293961939,4.062077060522867,9.871845138033295,4.785773143882934,4.21595562841838,6.688292726466519,3.628430800957292,9.481988471947309,9.488096957824377,4.873619520874045,7.608380654562377,4.586857933600956,4.518284855811572,4.599659836200003,9.607197748296455,9.926514484607514,7.771442867199044,3.8071242944291526,4.67376785169461,10.086080048799376,2.8237138171534046,6.449040922552722,3.038574055701441,3.2528927692672394,6.668438111310881,1.2055458170834987,5.312847866459173,1.9929349790567197,7.031110476825756,7.804385611763906,2.7376658008047596,7.470376015092058,7.027337113197259,7.357956932839553,3.018188098368578,5.0929073218402285,7.45018189655943,10.020429436262269,7.316221297720457,1.4822099046252535,3.812483421060091,6.803001681575866,2.3043361120683845,0.8122474656236011,9.878501834778051,1.3565631209695017,3.4897208880797814,4.892263422336107,2.187836363277249,3.780720525746548,8.49261461665368,2.957283614779335,5.1932683871015515,0.7006645607706551,7.680995551538878,2.306144157915373,6.9511664444678285,8.395007788136413,1.28802300257715,0.31705222468289873,2.7377910446803133,2.557179080106183,0.43639455771309443,6.939576610548395,7.102390640922851,8.918591041255604,5.355052658477236,5.147213086758185,3.4838997071823763,0.745199389040122,9.832228924709836,2.4567370108306474,6.946103493790244,8.034032529416713,5.740845954262453,1.3119741378390504,2.763208792545352,8.860792079731178,6.497796248879367,0.26625767332075656,4.580905651443187,8.160586918693955,8.079494431746667,4.997942958191957,7.474942872202552,0.17732683713544298,9.702489711715966,5.381318182128972,9.945362466884747,0.9985766575096021,4.2091610223397495,2.916783586342939,1.1379548576646015,2.5795773985300707,5.976612234279052,8.535795752973389,8.211712644856949,2.7841253002253863,2.7374574991952625,9.945513636233247,0.7241699015498281,3.6435935401248787,3.691476529058302,4.4630694802209865,7.201056435041072,4.841755869777767,9.7223789878408,6.824289839701661,9.447567870773602,0.9781517854795095,2.025108419344912,1.1816111755013348,8.541408686018523,3.454427938614848,6.056689880630843,2.104306114329686,4.132107988709874,9.322257971764879,2.4092373907073417,5.423262727534459,5.272367077633537,7.931329756006797,1.2016133392411554,6.9239348978735205,1.999227856044522,2.1262045470379243,4.16742686684692,1.9073515220295811,9.544801634245726,2.1044210123428084,4.862975458908949,3.19951268161917,6.66362130464432,9.250082588041936,2.1379839301865755,5.124641131506783,4.471757992344052,8.50245740741022,6.1550338112391705,9.009673544478927,7.1252850664834515,2.4833434889016526,5.2786644191195276,9.443511941783171,5.748128945979396,5.968801053740067,6.127119948336128,8.549591159860624,3.881943255832463,0.6053944930057641,8.433174840875624,2.1744911596408465,4.526099686334689,9.73846565921267,7.985006130346758,5.779239145664062,3.183109222069731,1.0348184037963315,1.4013295635311906,5.927097327649606,0.9831235075682331,2.565402674596583,1.0143519505420884,2.845278425631854,3.205890358093432,4.263974864457779,8.309049315962627,0.7668128661227979,1.2945824231329894,5.148592670870809,5.523031279532743,0.704379046739717,3.799465876319149,6.443685876441203,3.7958402191127303,9.016561038116686,3.2441831966518033,4.061160754721394,7.545417564545585,2.726750900930718,4.285858506416735,6.959243590176245,3.1094706927855165,4.99565484334833,5.375391733471216,5.146813001814101,6.676736956916651,5.4138657084450985,7.850991853552702,9.37382386848784,1.1273388711907528,1.7709371333042345,2.0106709928248776,2.4493911904939627,2.379556610569531,3.793271847368597,9.743853632396005,1.4939802193490404,4.043732199491761,1.0242561865971078,3.983296571915562,3.8534492156157065,6.8696699305941875,1.3634961548859315,1.8505624162374212,0.9596063906046303,0.4839291514091314,9.645083750176669,2.8827554536885502,9.111933793612108,6.152545552573006,7.525689742206374,1.0141053010582535,5.638931115939452,3.91812489245939,1.319616002475813,1.883258085453411,1.8125485572619549,0.3778618684051104,1.9780995402452672,1.2684021166752635,3.277076878072515,4.609930090132329,8.159459590862953,1.4022860893154454,8.222327680876447,2.544104349697774,0.8456575393614462,9.15895704518079,2.3791909911025133,6.913527430901049,4.873981503180401,9.000263947906857,3.942353049067371,3.031343431694511,4.26528084087611,0.32312845429024006,5.1138227618214325,5.151394662943239,9.70549229960722,0.5837918118705175,4.353316216212517,1.505355723044629,1.2053814959826858,7.7211223464925745,0.745285216450866,8.522917522282873,1.1840955547602705,1.460319647978554,3.8671713935919514,0.737424161496386,3.6387313637090632,4.340046957140089,3.3631644898759325,2.966238551838547,0.1972396192152547,6.681760329013933,5.947326934215164,7.678741853638984,8.545670195685359,10.086330385308363,8.604555384639301,8.425700993047357,8.612976400070423,6.800607001688298,2.921262977539486,5.986129384774073,1.7555465491853905,5.735854627087574,9.176418286021608,8.353537142615265,4.68442106753687,0.6364822193941021,7.975009839033694,0.15797896998368524,5.990067556910423,5.669293265354151,1.0870898791935313,5.932789535972176,0.45744613993991423,9.950978217997864,0.8491391482542897,6.9002785412607395,7.2383129667108275,7.8898042895962295,1.8197322343641753,8.6117166932976,3.0543470118321134,5.238591934606145,8.342676562669933,8.770161467191805,2.058125312083897,5.323824878288886,3.844382646098532,4.227747343201726,6.1226092019090865,7.683797298301881,2.820668417663471,8.632779449707927,3.9200412005432637,3.4690228595419503,9.376475969706878,7.644927116965679,6.63909533846256,1.4649682885258708,5.018934799458853,6.461887895999519,5.696283670630323,1.94972959580061,4.730716794017613,8.560679028707582,1.4824195220952852,7.289599229489323,6.675581949975269,10.078881256076238,1.391395661982494,5.022727815163138,3.6277687258859914,0.6258522586038139,0.6597096332908957,8.273382218857884,7.572240837908126,6.075514197934095,0.7952238978196279,4.64555000891945,6.058401280678393,7.047817548497251,2.5310337336930955,5.38383737507556,9.130522063090838,4.233516810167049,4.408161013440026,8.722412482412143,5.7395867973772825,2.593780152242009,8.377989561524913,5.554542373441669,8.75955395235041,5.7638213290006854,2.2665538893579487,9.015802008735578,0.6081626324791433,3.8465023147044106,8.942389861191048,1.870075315244678,9.66569898060276,0.24924809034651543,3.816190392871738,4.96182412388702,7.919322977644289,9.949011276407429,3.2063207378248415,0.8132761275652555,5.234616886758699,6.302803863339002,7.783888378291766,0.616606980052563,9.195492130680181,1.7477366974947928,5.109268910022778,9.193475832954725,5.637814707411953,0.8970827710295292,9.10335821846591,0.6451629463592156,9.49474379914045,5.796472538066842,8.61173009691206,8.136061694212101,1.8468757498534616,0.9455583911732955,4.9915375054902125,4.383631877558187,3.3911538535434596,7.059486081100009,0.15109521059486034,8.702790609842522,2.8798903640540865,7.3315810895459865,7.08605937860883,4.983566660801193,1.6516873967547818,3.8622310638043977,4.561526626910707,8.724762578752921,7.965779329028845,1.617342747555729,8.607926326502882,4.148152831694946,1.3191199920504737,6.488776219035694,4.891233852688103,8.896414349232407,7.431372452985368,4.800842207873038,3.027844283457495,6.20535176680284,5.2596270543426655,8.685762165742826,9.404207274856862,3.3107027132566027,4.22896122224445,8.967068812835437,9.547280932482563,2.890614158654891,9.933329570897124,8.038816726624704,2.290359450629036,4.932583746156257,0.3201108433993137,9.315708777787775,6.007777856181494,8.550390374330576,2.655999692689813,0.8632894808024326,3.4716798573692698,0.8642031316360032,3.848980142597105,5.082632862982772,0.281147183236251,8.188643574448198,2.2500661870585814,4.406310952570124,8.022748937177512,9.141189809785821,9.388712353458068,4.992700851436124,8.501142850427012,6.981052869305577,6.561445530603448,2.3364554721952424,2.8481482927070223,6.132204795304593,6.527236810544755,4.646439861301183,4.920956953748389,9.535298040393627,5.071486806483832,0.6086980815797881,3.5864147019706416,1.2183491875173036,8.687424112423221,3.906968418788409,4.028291608012513,4.173083351724474,9.037200446427459,7.502183546077082,9.359027339395073,9.489895739056616,0.6514948015785537,4.040190552091983,1.3223909117955168,9.094465888806821,6.065289842884356,3.1925473139141567,7.7149979051771975,7.837113179808675,3.3736068178176026,0.8495166958658006,3.2457957891786395,8.946106152293616,4.830961316149267,7.142892953021788,3.824609799081721,3.3291261662286886,1.0366235003687163,9.853266860091221,3.317011917010063,7.992336014675009,1.475326108600955,1.8149581596489917,7.411745208444115,5.079410782402615,8.022958346158376,10.00208285154802,1.6141253960043156,2.289550426269511,5.496049893638261,0.8207015482125045,2.62068691004681,9.540028129459865,6.497373756978303,8.920476608613939,9.383980247649344,0.2957090987910026,2.230304278153398,1.3162131621239193,4.981898048867575,5.248761331063253,8.005545406948753,5.318872944368082,8.62705329864738,7.364819392732845,2.71383828079076,7.827612817577194,5.830150439388302,2.323411004841711,5.9944366278911865,1.8894636743752535,2.9627020811749607,7.5457800145478275,6.369695012131447,7.404526257574378,0.700890382708571,4.91051457032043,2.5133154046001294,6.912858216567842,2.660325338449727,9.452033656127371,2.8680003511569576,3.024732769946483,0.9956864727034008,8.909137663182273,9.88341058974008,0.2344348082052349,3.4888972693333673,8.51958804791409,0.2433869402898802,2.4173017148627376,4.365782031188765,8.715103230084521,2.007264156525499,1.7538503503170044,9.906602213840344,6.282284191174236,5.610402407845582,8.21461448721739,5.029547016849172,1.4006997910932029,2.39565820013093,8.06695913375901,2.068369973478895,7.290950102291514,8.634028629901591,3.888973212569208,5.453191648213715,4.419185944622093,7.39829826019838,9.173209790737076,5.465534251426405,8.492336148922867,3.0535186021553717,5.630452867589742,9.726058606620134,9.230553977313821,6.264740432054531,1.9718055202504836,6.316893382424874,1.7183290883403102,6.429370382681405,2.455043967048407,7.589742266358469,0.7328736135858392,8.140588226924583,7.83551631959484,8.350036429891599,6.3445554701661315,0.7329815813238515,6.049468425593825,3.914228174052926,5.606500259928462,8.835509696357938,10.086357258939714,3.470507273025366,2.0497670745305117,9.464387942901352,7.305090125461225,1.3056555556548521,6.096413609514476,3.2467031657768053,1.6560746005765759,4.395523872151844,4.594758329580098,9.75975610543076,2.0368957802416507,7.909271503208,7.7272388573773485,2.503811979073678,0.954195109348691,5.612159119877356,0.3839977562994711,3.697010698824972,10.096402094430847,1.6951261657152639,9.226906184709572,9.577458156335735,7.650173705156643,6.826539246904597,0.38013072325318686,7.2789254691906775,3.1543621014743874,6.023652721054485,9.486803546136285,7.453023863569113,4.8613685723984155,7.791198984607647,4.807614571148192,9.504933948773324,3.0323242888791957,7.241837915260477,7.25340875870149,4.431497904484175,0.24448589321172323,7.279276420697423,7.426077710962895,1.5560030034690597,3.528505109673632,3.5633932670242365,2.338051892671021,9.590407874508687,9.355368824914185,5.263541958664364,6.599147614584339,7.703790190682008,1.4223476054132733,7.62080231503224,7.338292855663516,5.959663403798377,8.750336641031494,0.5400520468875035,8.41350358002532,6.242033514945653,1.005027892366458,1.394356955194721,3.8027506654798415,4.672448701361386,7.780805535318012,6.82315445084606,0.8240210657400503,6.743799951617623,0.3484645051167855,3.587672106440382,9.264768499042189,4.763934938438019,6.743491749293137,8.117106740400748,2.633598889424508,0.9787890170973145,3.5081682414046056,0.2941727671348936,8.985296210951013,5.252679275761471,2.183606259189624,9.112925363983871,7.625658307122379,1.2694186170592558,7.470165234715444,4.166576977590392,6.630547002536504,9.777660523089127,7.907664057763847,0.10448141238580613,3.7109331369234657,1.4739931078098623,0.5022683986627773,2.783061324416846,3.9639254987211516,5.457404959660929,9.97814081679739,0.8049047764509275,3.259783186510601,4.308368156964503,4.796287671936191,8.646794740043406,5.796736507203153,5.235416902127327,8.116634343162042,7.276567296046664,3.8590331417298973,4.20228170924246,7.1791599846979075,9.73815971846797,2.0708631867457616,0.5560739101894351,3.6350060518661476,8.001695046200522,7.079880118332094,4.794271779890135,5.487956589175656,0.19351051627620622,1.0600061508557623,9.714757840154702,3.3947302548150238,3.090382412215947,5.939741292519413,7.138245810435093,5.865839618511334,9.837721137219546,10.065518140127816,8.892368061316331,8.92517702329337,3.054358379397503,3.65345667047291,7.856593036281929,5.52002630059488,0.696588860287246,9.48805894969092,1.4734484045724583,3.3715032673544756,3.142872997256705,2.1857470516129527,3.9637856548733965,7.62360432792536,3.3303186007601195,1.3787207458658712,3.332163911001532,8.775563499253966,4.108829752487429,0.13210132817579093,1.0757631348207009,4.4346506519252635,6.959159637017197,0.7190978094947152,9.688762276070708,1.228071978762284,7.347351230463295,8.509609676900409,2.309777323393152,7.389425313467577,2.4439826167248624,2.5707091557576613,0.578520051538861,8.516840307433876,7.932892401448817,5.0950932279431065,1.8840781143046414,2.916623262014313,4.670232776834508,6.933403101810256,0.25165488709599215,1.76491577990748,1.1486842114356899,6.723235048527913,2.8785138959355616,4.250822078327015,10.036875082206276,7.966120239310772,7.071228676860966,2.9696804977917712,3.7832495988855306,1.6553703869374259,3.23607966148194,8.43020133915683,6.792453675491632,7.3054427358505905,9.062612084804442,3.649536016289232,0.8077236653017527,5.055276573278429,6.192351648787285,1.1956894855374745,6.671252897493317,1.1795786591150448,9.485511881469991,5.4046854677746685,8.494336260924134,7.935709728446167,5.18707648467052,0.486003318135496,6.242992595434671,3.1478020898345647,1.9142761127432018,5.6256524482429855,6.339551307791463,0.8513879581848981,7.291369517804729,6.809678811089481,9.788768052393426,3.4170503059122237,7.302627364168936,8.005583215899318,8.135934632321908,6.325337634161559,7.659572504226554,6.739719450254646,6.122492138283982,2.182116968864699,6.721890072383191,6.3913460553798656,3.104644364849849,2.5159082476400862,6.554869249801049,2.86213756280674,4.884955137860844,1.280514781083929,10.02395542081663,0.4502494676383483,9.137766477113844,1.3304498875866944,1.9253047542752166,4.316406080698579,7.456888570083657,10.042220157764028,6.801656958061701,9.354321990582061,1.60274876662014,1.5749069650724867,3.41447527490215,8.253762372515839,1.7096402624398865,3.976151430614473,9.114392606926852,8.871587892850618,7.944479813518301,5.649875673725425,8.231381565933376,2.343949806515696,9.765485783957802,9.916638351317014,6.172250895210266,2.595927037633352,1.81001458307947,6.151143964413441,5.051575010591266,5.660977197400528,6.623050390414777,3.9255972591461052,8.11050353364979,3.2164877520780757,5.017418806369897,5.945573821489354,9.87647118937844,6.1649054210472185,0.9988738818656405,0.7132254515685598,9.21781912525291,8.25021920143228,7.41666744889,6.61283645351398,1.0979319494211137,1.2200574839470157,5.695944937005416,6.63911280723102,6.161706944850265,6.8164095062190375,7.237025344517535,2.9642934826441034,3.7446288258367977,7.117144189183782,6.4866229443637655,0.21522614039332302,2.8133298362769543,2.4232191930328226,0.6445291236636607,4.2275436562511,6.064329930432216,9.40336619080288,8.470151743152687,9.249417798474212,4.600639864323819,1.1482391151460503,0.6098445187017753,0.40913903089908266,2.896581002659125,7.424090858324126,2.0013822154024075,1.8444778169267828,5.330024514585485,1.6009008233545419,9.222641872300919,8.547595736905983,4.5777720942817055,3.706653851960442,6.967143895784954,8.641378037769911,5.048106252817355,5.835888426630234,6.957245551792551,1.7170593813451551]} diff --git a/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/test/fixtures/julia/runner.jl b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/test/fixtures/julia/runner.jl new file mode 100644 index 000000000000..db5f4e0e3161 --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/test/fixtures/julia/runner.jl @@ -0,0 +1,77 @@ +#!/usr/bin/env julia +# +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import Distributions: quantile, InverseGaussian +import JSON + +""" + gen( p, mu, lambda, name ) + +Generate fixture data and write to file. + +# Arguments + +* `p`: input probability +* `mu`: mean +* `lambda`: shape parameter +* `name::AbstractString`: output filename + +# Examples + +``` julia +julia> p = rand( 1000 ); +julia> mu = rand( 1000 ) .* 10.0 .+ 0.1; +julia> lambda = rand( 1000 ) .* 10.0 .+ 0.1; +julia> gen( p, mu, lambda, "data.json" ); +``` +""" +function gen( p, mu, lambda, name ) + z = Array{Float64}( undef, length(p) ); + for i in eachindex(p) + z[ i ] = quantile( InverseGaussian( mu[i], lambda[i] ), p[i] ); + end + + # Store data to be written to file as a collection: + data = Dict([ + ("p", p), + ("mu", mu), + ("lambda", lambda), + ("expected", z) + ]); + + # Based on the script directory, create an output filepath: + filepath = joinpath( dir, name ); + + # Write the data to the output filepath as JSON: + outfile = open( filepath, "w" ); + write( outfile, JSON.json(data) ); + write( outfile, "\n" ); + close( outfile ); +end + +# Get the filename: +file = @__FILE__; + +# Extract the directory in which this file resides: +dir = dirname( file ); + +# Generate fixture data: +p = rand( 1000 ); +mu = ( rand( 1000 ) .* 10.0 ) .+ 0.1; +lambda = ( rand( 1000 ) .* 10.0 ) .+ 0.1; +gen( p, mu, lambda, "data.json" ); diff --git a/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/test/test.factory.js b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/test/test.factory.js new file mode 100644 index 000000000000..941ba9970a9c --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/test/test.factory.js @@ -0,0 +1,187 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF 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 isnan = require( '@stdlib/math/base/assert/is-nan' ); +var isAlmostSameValue = require( '@stdlib/assert/is-almost-same-value' ); +var PINF = require( '@stdlib/constants/float64/pinf' ); +var NINF = require( '@stdlib/constants/float64/ninf' ); +var factory = require( './../lib/factory.js' ); + + +// FIXTURES // + +var data = require( './fixtures/julia/data.json' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof factory, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns a function', function test( t ) { + var quantile = factory( 1.0, 1.0 ); + t.strictEqual( typeof quantile, 'function', 'returns expected value' ); + t.end(); +}); + +tape( 'if provided `NaN` for any parameter, the returned function always returns `NaN`', function test( t ) { + var quantile; + + quantile = factory( NaN, 1.0 ); + t.strictEqual( isnan( quantile( 0.5 ) ), true, 'returns expected value' ); + + quantile = factory( 1.0, NaN ); + t.strictEqual( isnan( quantile( 0.5 ) ), true, 'returns expected value' ); + + quantile = factory( NaN, NaN ); + t.strictEqual( isnan( quantile( 0.5 ) ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a non-positive `mu`, the returned function always returns `NaN`', function test( t ) { + var quantile; + + quantile = factory( 0.0, 1.0 ); + t.strictEqual( isnan( quantile( 0.5 ) ), true, 'returns expected value' ); + + quantile = factory( -1.0, 1.0 ); + t.strictEqual( isnan( quantile( 0.5 ) ), true, 'returns expected value' ); + + quantile = factory( NINF, 1.0 ); + t.strictEqual( isnan( quantile( 0.5 ) ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a negative `lambda`, the returned function always returns `NaN`', function test( t ) { + var quantile; + + quantile = factory( 1.0, -1.0 ); + t.strictEqual( isnan( quantile( 0.5 ) ), true, 'returns expected value' ); + + quantile = factory( 1.0, NINF ); + t.strictEqual( isnan( quantile( 0.5 ) ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided `lambda` equals `0`, the returned function evaluates a degenerate distribution centered at `mu`', function test( t ) { + var quantile; + var y; + + quantile = factory( 2.0, 0.0 ); + + y = quantile( 0.3 ); + t.strictEqual( y, 2.0, 'returns expected value' ); + + y = quantile( 0.9 ); + t.strictEqual( y, 2.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the returned function returns `NaN` if provided `NaN` for `p`', function test( t ) { + var quantile; + var y; + + quantile = factory( 1.0, 1.0 ); + + y = quantile( NaN ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the returned function returns `NaN` if provided `p < 0` or `p > 1`', function test( t ) { + var quantile; + var y; + + quantile = factory( 1.0, 1.0 ); + + y = quantile( -0.1 ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + y = quantile( 1.1 ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + y = quantile( NINF ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + y = quantile( PINF ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the returned function returns `0` if provided `p = 0`', function test( t ) { + var quantile; + var y; + + quantile = factory( 1.0, 1.0 ); + + y = quantile( 0.0 ); + t.strictEqual( y, 0.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the returned function returns `Infinity` if provided `p = 1`', function test( t ) { + var quantile; + var y; + + quantile = factory( 1.0, 1.0 ); + + y = quantile( 1.0 ); + t.strictEqual( y, PINF, 'returns expected value' ); + + t.end(); +}); + +tape( 'the returned function evaluates the Wald quantile for `p`, `mu`, and `lambda`', function test( t ) { + var expected; + var quantile; + var lambda; + var mu; + var p; + var y; + var i; + + expected = data.expected; + p = data.p; + mu = data.mu; + lambda = data.lambda; + for ( i = 0; i < p.length; i++ ) { + quantile = factory( mu[ i ], lambda[ i ] ); + y = quantile( p[ i ] ); + if ( y === expected[ i ] ) { + t.strictEqual( y, expected[ i ], 'p: '+p[ i ]+', mu: '+mu[ i ]+', lambda: '+lambda[ i ]+', y: '+y+', expected: '+expected[ i ] ); + } else { + t.ok( isAlmostSameValue( y, expected[i], 90 ), 'within tolerance. p: '+p[ i ]+'. mu: '+mu[i]+'. lambda: '+lambda[i]+'. y: '+y+'. E: '+expected[ i ]+'.' ); + } + } + t.end(); +}); diff --git a/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/test/test.js b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/test/test.js new file mode 100644 index 000000000000..ea2a910239b6 --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/test/test.js @@ -0,0 +1,38 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF 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 quantile = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof quantile, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is a factory method for generating `quantile` functions', function test( t ) { + t.strictEqual( typeof quantile.factory, 'function', 'exports a factory method' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/test/test.main.js b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/test/test.main.js new file mode 100644 index 000000000000..ab6ed0d4e172 --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/test/test.main.js @@ -0,0 +1,158 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF 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 isnan = require( '@stdlib/math/base/assert/is-nan' ); +var isAlmostSameValue = require( '@stdlib/assert/is-almost-same-value' ); +var PINF = require( '@stdlib/constants/float64/pinf' ); +var NINF = require( '@stdlib/constants/float64/ninf' ); +var quantile = require( './../lib' ); + + +// FIXTURES // + +var data = require( './fixtures/julia/data.json' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof quantile, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'if provided `NaN` for any parameter, the function returns `NaN`', function test( t ) { + var y; + + y = quantile( NaN, 1.0, 1.0 ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + y = quantile( 0.5, NaN, 1.0 ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + y = quantile( 0.5, 1.0, NaN ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + y = quantile( NaN, NaN, NaN ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a non-positive `mu`, the function returns `NaN`', function test( t ) { + var y; + + y = quantile( 0.5, 0.0, 1.0 ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + y = quantile( 0.5, -1.0, 1.0 ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + y = quantile( 0.5, NINF, 1.0 ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a negative `lambda`, the function returns `NaN`', function test( t ) { + var y; + + y = quantile( 0.5, 1.0, -1.0 ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + y = quantile( 0.5, 1.0, NINF ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided `lambda` equals `0`, the function evaluates a degenerate distribution centered at `mu`', function test( t ) { + var y; + + y = quantile( 0.3, 2.0, 0.0 ); + t.strictEqual( y, 2.0, 'returns expected value' ); + + y = quantile( 0.9, 2.0, 0.0 ); + t.strictEqual( y, 2.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided `p < 0` or `p > 1`, the function returns `NaN`', function test( t ) { + var y; + + y = quantile( -0.1, 1.0, 1.0 ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + y = quantile( 1.1, 1.0, 1.0 ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + y = quantile( NINF, 1.0, 1.0 ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + y = quantile( PINF, 1.0, 1.0 ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided `p = 0`, the function returns `0`', function test( t ) { + var y; + + y = quantile( 0.0, 1.0, 1.0 ); + t.strictEqual( y, 0.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided `p = 1`, the function returns `Infinity`', function test( t ) { + var y; + + y = quantile( 1.0, 1.0, 1.0 ); + t.strictEqual( y, PINF, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function evaluates the Wald quantile for `p`, `mu`, and `lambda`', function test( t ) { + var expected; + var lambda; + var mu; + var p; + var y; + var i; + + expected = data.expected; + p = data.p; + mu = data.mu; + lambda = data.lambda; + for ( i = 0; i < p.length; i++ ) { + y = quantile( p[ i ], mu[ i ], lambda[ i ] ); + if ( y === expected[ i ] ) { + t.strictEqual( y, expected[ i ], 'p: '+p[ i ]+', mu: '+mu[ i ]+', lambda: '+lambda[ i ]+', y: '+y+', expected: '+expected[ i ] ); + } else { + t.ok( isAlmostSameValue( y, expected[i], 90 ), 'within tolerance. p: '+p[ i ]+'. mu: '+mu[i]+'. lambda: '+lambda[i]+'. y: '+y+'. E: '+expected[ i ]+'.' ); + } + } + t.end(); +}); diff --git a/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/test/test.native.js b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/test/test.native.js new file mode 100644 index 000000000000..b99149312a33 --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/wald/quantile/test/test.native.js @@ -0,0 +1,167 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF 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 tryRequire = require( '@stdlib/utils/try-require' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var isAlmostSameValue = require( '@stdlib/assert/is-almost-same-value' ); +var PINF = require( '@stdlib/constants/float64/pinf' ); +var NINF = require( '@stdlib/constants/float64/ninf' ); + + +// VARIABLES // + +var quantile = tryRequire( resolve( __dirname, './../lib/native.js' ) ); +var opts = { + 'skip': ( quantile instanceof Error ) +}; + + +// FIXTURES // + +var data = require( './fixtures/julia/data.json' ); + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof quantile, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'if provided `NaN` for any parameter, the function returns `NaN`', opts, function test( t ) { + var y; + + y = quantile( NaN, 1.0, 1.0 ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + y = quantile( 0.5, NaN, 1.0 ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + y = quantile( 0.5, 1.0, NaN ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + y = quantile( NaN, NaN, NaN ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a non-positive `mu`, the function returns `NaN`', opts, function test( t ) { + var y; + + y = quantile( 0.5, 0.0, 1.0 ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + y = quantile( 0.5, -1.0, 1.0 ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + y = quantile( 0.5, NINF, 1.0 ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a negative `lambda`, the function returns `NaN`', opts, function test( t ) { + var y; + + y = quantile( 0.5, 1.0, -1.0 ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + y = quantile( 0.5, 1.0, NINF ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided `lambda` equals `0`, the function evaluates a degenerate distribution centered at `mu`', opts, function test( t ) { + var y; + + y = quantile( 0.3, 2.0, 0.0 ); + t.strictEqual( y, 2.0, 'returns expected value' ); + + y = quantile( 0.9, 2.0, 0.0 ); + t.strictEqual( y, 2.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided `p < 0` or `p > 1`, the function returns `NaN`', opts, function test( t ) { + var y; + + y = quantile( -0.1, 1.0, 1.0 ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + y = quantile( 1.1, 1.0, 1.0 ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + y = quantile( NINF, 1.0, 1.0 ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + y = quantile( PINF, 1.0, 1.0 ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided `p = 0`, the function returns `0`', opts, function test( t ) { + var y; + + y = quantile( 0.0, 1.0, 1.0 ); + t.strictEqual( y, 0.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided `p = 1`, the function returns `Infinity`', opts, function test( t ) { + var y; + + y = quantile( 1.0, 1.0, 1.0 ); + t.strictEqual( y, PINF, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function evaluates the Wald quantile for `p`, `mu`, and `lambda`', opts, function test( t ) { + var expected; + var lambda; + var mu; + var p; + var y; + var i; + + expected = data.expected; + p = data.p; + mu = data.mu; + lambda = data.lambda; + for ( i = 0; i < p.length; i++ ) { + y = quantile( p[ i ], mu[ i ], lambda[ i ] ); + if ( y === expected[ i ] ) { + t.strictEqual( y, expected[ i ], 'p: '+p[ i ]+', mu: '+mu[ i ]+', lambda: '+lambda[ i ]+', y: '+y+', expected: '+expected[ i ] ); + } else { + t.ok( isAlmostSameValue( y, expected[i], 90 ), 'within tolerance. p: '+p[ i ]+'. mu: '+mu[i]+'. lambda: '+lambda[i]+'. y: '+y+'. E: '+expected[ i ]+'.' ); + } + } + t.end(); +});