diff --git a/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/README.md b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/README.md new file mode 100644 index 000000000000..908403929eca --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/README.md @@ -0,0 +1,262 @@ + + +# Median + +> [Log-logistic][log-logistic-distribution] distribution [median][median]. + + + +
+ +The [median][median] for a [log-logistic][log-logistic-distribution] random variable with scale `α > 0` and shape `β > 0` is + + + +```math +\mathop{\mathrm{Median}}\left( X \right) = \alpha +``` + + + + + +
+ + + + + +
+ +## Usage + +```javascript +var median = require( '@stdlib/stats/base/dists/log-logistic/median' ); +``` + +#### median( alpha, beta ) + +Returns the [median][median] for a [log-logistic][log-logistic-distribution] distribution with scale parameter `alpha` and shape parameter `beta`. + +```javascript +var y = median( 2.0, 1.0 ); +// returns 2.0 + +y = median( 4.0, 3.0 ); +// returns 4.0 + +y = median( 1.0, 5.0 ); +// returns 1.0 +``` + +If provided `NaN` as any argument, the function returns `NaN`. + +```javascript +var y = median( NaN, 1.0 ); +// returns NaN + +y = median( 1.0, NaN ); +// returns NaN +``` + +If provided `alpha <= 0`, the function returns `NaN`. + +```javascript +var y = median( 0.0, 1.0 ); +// returns NaN + +y = median( -1.0, 1.0 ); +// returns NaN +``` + +If provided `beta <= 0`, the function returns `NaN`. + +```javascript +var y = median( 1.0, 0.0 ); +// returns NaN + +y = median( 1.0, -1.0 ); +// returns NaN +``` + +
+ + + + + +
+ +
+ + + + + +
+ +## Examples + + + +```javascript +var uniform = require( '@stdlib/random/array/uniform' ); +var logEachMap = require( '@stdlib/console/log-each-map' ); +var median = require( '@stdlib/stats/base/dists/log-logistic/median' ); + +var opts = { + 'dtype': 'float64' +}; +var alpha = uniform( 10, 0.1, 10.0, opts ); +var beta = uniform( 10, 0.1, 10.0, opts ); + +logEachMap( 'alpha: %0.4f, beta: %0.4f, Median(X;alpha,beta): %0.4f', alpha, beta, median ); +``` + +
+ + + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/stats/base/dists/log-logistic/median.h" +``` + +#### stdlib_base_dists_log_logistic_median( alpha, beta ) + +Returns the median for a log-logistic distribution with scale `alpha` and shape `beta`. + +```c +double out = stdlib_base_dists_log_logistic_median( 1.0, 1.0 ); +// returns 1.0 +``` + +The function accepts the following arguments: + +- **alpha**: `[in] double` scale parameter. +- **beta**: `[in] double` shape parameter. + +```c +double stdlib_base_dists_log_logistic_median( const double alpha, const double beta ); +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/stats/base/dists/log-logistic/median.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 alpha; + double beta; + double v; + int i; + + for ( i = 0; i < 25; i++ ) { + alpha = random_uniform( 0.1, 10.0 ); + beta = random_uniform( 0.1, 10.0 ); + v = stdlib_base_dists_log_logistic_median( alpha, beta ); + printf( "alpha: %lf, beta: %lf, Median(X;alpha,beta): %lf\n", alpha, beta, v ); + } +} +``` + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/benchmark/benchmark.js new file mode 100644 index 000000000000..42b0b1cff8a0 --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/benchmark/benchmark.js @@ -0,0 +1,59 @@ +/** +* @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 pkg = require( './../package.json' ).name; +var median = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var alpha; + var beta; + var opts; + var y; + var i; + + opts = { + 'dtype': 'float64' + }; + alpha = uniform( 100, EPS, 10.0, opts ); + beta = uniform( 100, EPS, 10.0, opts ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = median( alpha[ i % alpha.length ], beta[ i % beta.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/log-logistic/median/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/benchmark/benchmark.native.js new file mode 100644 index 000000000000..3f74423684ce --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/benchmark/benchmark.native.js @@ -0,0 +1,68 @@ +/** +* @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 tryRequire = require( '@stdlib/utils/try-require' ); +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; + + +// VARIABLES // + +var median = tryRequire( resolve( __dirname, './../lib/native.js' ) ); +var opts = { + 'skip': ( median instanceof Error ) +}; + + +// MAIN // + +bench( format( '%s::native', pkg ), opts, function benchmark( b ) { + var alpha; + var beta; + var opts; + var y; + var i; + + opts = { + 'dtype': 'float64' + }; + alpha = uniform( 100, EPS, 10.0, opts ); + beta = uniform( 100, EPS, 10.0, opts ); + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = median( alpha[ i % alpha.length ], beta[ i % beta.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/log-logistic/median/benchmark/c/Makefile b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/benchmark/c/Makefile new file mode 100644 index 000000000000..979768abbcec --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/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/log-logistic/median/benchmark/c/benchmark.c b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/benchmark/c/benchmark.c new file mode 100644 index 000000000000..5f5dff46ccbc --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/benchmark/c/benchmark.c @@ -0,0 +1,140 @@ +/** +* @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/log-logistic/median.h" +#include "stdlib/constants/float64/eps.h" +#include +#include +#include +#include +#include + +#define NAME "log-logistic-median" +#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 ); + 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 elapsed; + double alpha[ 100 ]; + double beta[ 100 ]; + double y; + double t; + int i; + + for ( i = 0; i < 100; i++ ) { + alpha[ i ] = random_uniform( STDLIB_CONSTANT_FLOAT64_EPS, 10.0 ); + beta[ i ] = random_uniform( STDLIB_CONSTANT_FLOAT64_EPS, 10.0 ); + } + + t = tic(); + for ( i = 0; i < ITERATIONS; i++ ) { + y = stdlib_base_dists_log_logistic_median( alpha[ i % 100 ], beta[ 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; + + 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/log-logistic/median/binding.gyp b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/binding.gyp new file mode 100644 index 000000000000..0d6508a12e99 --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/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/log-logistic/median/docs/img/equation_log_logistic_median.svg b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/docs/img/equation_log_logistic_median.svg new file mode 100644 index 000000000000..e2f51c84f5f5 --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/docs/img/equation_log_logistic_median.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/docs/repl.txt b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/docs/repl.txt new file mode 100644 index 000000000000..127fcfca77b7 --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/docs/repl.txt @@ -0,0 +1,42 @@ + +{{alias}}( alpha, beta ) + Returns the median of a log-logistic distribution with scale parameter + `alpha` and shape parameter `beta`. + + If provided `NaN` as any argument, the function returns `NaN`. + + If provided `alpha <= 0`, the function returns `NaN`. + + If provided `beta <= 0`, the function returns `NaN`. + + Parameters + ---------- + alpha: number + Scale parameter. + + beta: number + Shape parameter. + + Returns + ------- + out: number + Median. + + Examples + -------- + > var y = {{alias}}( 1.0, 1.0 ) + 1.0 + > y = {{alias}}( 4.0, 2.0 ) + 4.0 + > y = {{alias}}( NaN, 1.0 ) + NaN + > y = {{alias}}( 1.0, NaN ) + NaN + > y = {{alias}}( 0.0, 1.0 ) + NaN + > y = {{alias}}( 1.0, 0.0 ) + NaN + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/docs/types/index.d.ts b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/docs/types/index.d.ts new file mode 100644 index 000000000000..49d3b6fb30d9 --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/docs/types/index.d.ts @@ -0,0 +1,62 @@ +/* +* @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 + +/** +* Returns the median for a log-logistic distribution with scale parameter `alpha` and shape parameter `beta`. +* +* ## Notes +* +* - If provided `alpha <= 0`, the function returns `NaN`. +* - If provided `beta <= 0`, the function returns `NaN`. +* +* @param alpha - scale parameter +* @param beta - shape parameter +* @returns median +* +* @example +* var y = median( 1.0, 1.0 ); +* // returns 1.0 +* +* @example +* var y = median( 4.0, 2.0 ); +* // returns 4.0 +* +* @example +* var y = median( NaN, 1.0 ); +* // returns NaN +* +* @example +* var y = median( 1.0, NaN ); +* // returns NaN +* +* @example +* var y = median( -1.0, 1.0 ); +* // returns NaN +* +* @example +* var y = median( 1.0, -1.0 ); +* // returns NaN +*/ +declare function median( alpha: number, beta: number ): number; + + +// EXPORTS // + +export = median; diff --git a/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/docs/types/test.ts b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/docs/types/test.ts new file mode 100644 index 000000000000..75eebb10ed67 --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/docs/types/test.ts @@ -0,0 +1,56 @@ +/* +* @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 median = require( './index' ); + + +// TESTS // + +// The function returns a number... +{ + median( 1.0, 2.0 ); // $ExpectType number +} + +// The compiler throws an error if the function is provided values other than two numbers... +{ + median( true, 3 ); // $ExpectError + median( false, 2 ); // $ExpectError + median( '5', 1 ); // $ExpectError + median( [], 1 ); // $ExpectError + median( {}, 2 ); // $ExpectError + median( ( x: number ): number => x, 2 ); // $ExpectError + + median( 9, true ); // $ExpectError + median( 9, false ); // $ExpectError + median( 5, '5' ); // $ExpectError + median( 8, [] ); // $ExpectError + median( 9, {} ); // $ExpectError + median( 8, ( x: number ): number => x ); // $ExpectError + + median( [], true ); // $ExpectError + median( {}, false ); // $ExpectError + median( false, '5' ); // $ExpectError + median( {}, [] ); // $ExpectError + median( '5', ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided insufficient arguments... +{ + median(); // $ExpectError + median( 3 ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/examples/c/Makefile b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/examples/c/Makefile new file mode 100644 index 000000000000..c8f8e9a1517b --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/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/log-logistic/median/examples/c/example.c b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/examples/c/example.c new file mode 100644 index 000000000000..fc5978b48876 --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/examples/c/example.c @@ -0,0 +1,40 @@ +/** +* @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/log-logistic/median.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 alpha; + double beta; + double v; + int i; + + for ( i = 0; i < 25; i++ ) { + alpha = random_uniform( 0.1, 10.0 ); + beta = random_uniform( 0.1, 10.0 ); + v = stdlib_base_dists_log_logistic_median( alpha, beta ); + printf( "alpha: %lf, beta: %lf, Median(X;alpha,beta): %lf\n", alpha, beta, v ); + } +} diff --git a/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/examples/index.js b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/examples/index.js new file mode 100644 index 000000000000..149ca4a4be73 --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/examples/index.js @@ -0,0 +1,31 @@ +/** +* @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 logEachMap = require( '@stdlib/console/log-each-map' ); +var median = require( './../lib' ); + +var opts = { + 'dtype': 'float64' +}; +var alpha = uniform( 10, 0.1, 10.0, opts ); +var beta = uniform( 10, 0.1, 10.0, opts ); + +logEachMap( 'alpha: %0.4f, beta: %0.4f, Median(X;alpha,beta): %0.4f', alpha, beta, median ); diff --git a/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/include.gypi b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/include.gypi new file mode 100644 index 000000000000..bee8d41a2caf --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/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': [ + '=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "statistics", + "stats", + "distribution", + "dist", + "continuous", + "median", + "scale", + "center", + "percentile", + "log-logistic", + "univariate" + ] +} diff --git a/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/src/Makefile b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/src/Makefile new file mode 100644 index 000000000000..2caf905cedbe --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/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/log-logistic/median/src/addon.c b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/src/addon.c new file mode 100644 index 000000000000..9f038a959aa3 --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/src/addon.c @@ -0,0 +1,23 @@ +/** +* @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/log-logistic/median.h" +#include "stdlib/math/base/napi/binary.h" + +// cppcheck-suppress shadowFunction +STDLIB_MATH_BASE_NAPI_MODULE_DD_D( stdlib_base_dists_log_logistic_median ) diff --git a/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/src/main.c b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/src/main.c new file mode 100644 index 000000000000..721c6ea72bfe --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/src/main.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/log-logistic/median.h" +#include "stdlib/math/base/assert/is_nan.h" + +/** +* Returns the median of a log-logistic distribution with scale parameter `alpha` and shape parameter `beta`. +* +* @param alpha scale parameter +* @param beta shape parameter +* @return median +* +* @example +* double v = stdlib_base_dists_log_logistic_median( 1.0, 1.0 ); +* // returns 1.0 +*/ +double stdlib_base_dists_log_logistic_median( const double alpha, const double beta ) { + if ( + stdlib_base_is_nan( alpha ) || + stdlib_base_is_nan( beta ) || + alpha <= 0.0 || + beta <= 0.0 + ) { + return 0.0 / 0.0; + } + return alpha; +} diff --git a/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/test/fixtures/julia/REQUIRE b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/test/fixtures/julia/REQUIRE new file mode 100644 index 000000000000..98be20b58ed3 --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/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/log-logistic/median/test/fixtures/julia/data.json b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/test/fixtures/julia/data.json new file mode 100644 index 000000000000..ca49810c7efb --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/test/fixtures/julia/data.json @@ -0,0 +1 @@ +{"alpha":[4.4712529342452285,9.207549003806651,7.9943911793003775,5.546291753675451,6.700172414959821,6.102664240971573,4.088541771081664,2.5594542443533097,6.497321201663901,4.448151620424198,9.280622285115733,5.482278028976488,7.829970995214781,1.0499613404457708,0.7995782831318298,2.9863576071563136,2.0533007315069884,8.185857281010557,3.1985423348598263,4.641447115760855,4.082125962522191,4.1368574433599825,6.282473436415714,9.14707207592077,2.515827829535384,5.785819740397237,9.521803194057123,8.758064292274133,4.074850519266877,4.317235835142672,1.2608768417576743,1.7091696891838648,9.048565505333864,1.6097295237277476,5.298257298331238,6.877937478451628,6.055615867388073,7.855154313006915,7.260475150164423,4.850350752675622,4.374708795052926,4.545956224305119,3.972590659245332,7.6304172290852685,3.8115537974824076,3.927428809463407,6.576033456677634,6.501767022048701,1.4436509869285752,4.8933172955963045,6.1725256970261135,8.550169831392369,6.14380589734105,0.6443111761397312,7.57799176824762,4.690545627365127,6.544494044728401,7.426294681766474,3.4704284264108987,6.805236762698819,4.476456206208974,2.523921700756151,7.243872943248663,1.961809078958825,0.300919864024367,0.9293004702667961,5.850862970718049,9.546464142932278,9.164939668811554,9.593631025886555,6.461755998130009,9.22575807560039,1.1057345917082628,5.847645362316902,4.563565316268967,4.705819678680283,9.455107437904362,2.7218984720526507,4.711488405770525,4.854439949277726,4.103657595116168,8.505242901726106,0.8211990800883394,3.6241027149646166,6.9190871496387825,7.05155772067423,2.266015096428746,6.8004396629417165,7.352572948655857,9.508643110619216,0.11135502585864812,9.933090357356939,0.46730402424116624,0.388373184095394,8.940904144261742,8.0654850757054,3.663880261591488,1.2153239587213083,0.5249349856698869,6.067091986319534,6.199217003259742,5.280456044556245,5.439091495029482,0.47384631874218586,2.105419369865593,0.711593972071518,8.033145723803008,7.68359912137279,0.4706789029824109,8.83142609766628,0.5354451497578426,0.36081421439488215,1.7784920144859373,3.024088717231186,1.0794956128539268,1.746550269479914,1.471562556184478,4.220318145734707,6.920947998123756,10.02472675610732,6.408312350620051,6.609395808957519,4.868893112354188,0.25265807215719016,4.81496344221803,8.971173375549348,5.295568942726884,3.27002560587911,5.734535919753453,2.0923998304023095,4.416711191762909,1.0784987780589872,9.249345893899003,7.798493255906447,0.4532661784040214,6.962878071535398,2.5911506170967913,3.5238979584208296,7.791913454497676,3.9616227432189466,7.749770257556087,9.320466972421874,4.283338008755514,4.391171928751986,5.030062857326391,2.2263982611832334,4.117333009067183,8.114889497247239,0.42229022926713256,3.7642224743982844,4.297974498274764,2.9746527395066535,8.640575468270507,7.922008556882456,2.9307430209375562,6.276947496871891,0.42545669939638475,2.928672966504726,5.913348092768793,6.613761852318012,2.7456695127214825,4.7922428784700895,2.7605433212809904,9.217243091566996,3.9754198621475867,8.097649046266241,7.270181386286516,4.21435731861297,2.0249092768973753,5.435482137788741,8.523646010721796,3.5616911768725945,8.445500652775108,4.271848185201401,6.383816246801514,8.652807648134926,9.173096003475889,9.315206920016626,4.250894181493331,4.10996434990648,6.888645541217319,2.8745539528147868,7.969898247101858,9.984703696940896,3.684055228641494,1.4999027251365882,1.680553429093743,7.49711727476881,1.129052210439716,0.3919812521500864,5.044073426287049,7.2858105720489315,1.932074334548961,7.822641647778685,6.88584012614799,8.272093300093008,8.51217597875988,2.2471752999253547,7.8749099146676045,7.845721599571348,2.6694659376445506,3.673186234359902,8.85779387798314,8.49246920110945,6.526562752730353,8.667235064983808,1.1962276336641287,0.2961085306416299,9.510843746734379,5.228080205336718,1.0540622483693607,9.745023857047295,5.656072447090776,1.973641419856751,9.083128388587859,5.953012054410955,1.3536755959756808,2.517476811336732,5.947260394578932,3.0725943705639502,9.998773602933225,5.469366668262318,7.125813794467808,0.9902802149969235,2.292835347749478,1.2420657664131163,2.0565762161960244,8.964838843486941,5.5534773318577315,10.092203221911534,8.42323983901196,7.792499077862955,7.8411304033545015,1.0186483420079862,8.794200586651936,6.462704541331705,3.7155332671150543,5.3563446429094,4.669228510257572,4.506996381709939,6.106900807542862,5.5713027413467575,5.11778791489301,5.514941939442526,1.7763676703332343,6.661877762703676,8.779614454216297,1.3355916500560716,3.6570187615676875,4.563161485895299,9.929813032015142,8.494614900532369,8.493338898255853,1.0897114030590127,3.916953516763373,7.546955173591371,8.11814037256689,1.1847007380205477,3.8173098776604797,3.391777449952529,7.241549278747156,4.3283708539862005,5.90801165784305,8.95895026080276,5.338759445381209,0.41575015170810514,1.8008884507823608,9.614298215786706,8.491319582208378,5.957222903001277,0.6473676935733573,0.19385776512382816,7.553050253250877,2.105906775355242,2.240384592909881,0.43296829593316255,8.993124898404064,1.9060073493043306,5.046294665320292,3.307230579593039,10.013977167867253,1.8994326435701736,1.679602936626734,5.568010369730991,0.12639131226873426,7.405231319406258,7.937246000073337,3.34814453965808,1.5141544686326336,7.975520878187654,6.601307840230796,5.032423912522246,2.796010606289683,5.357548977796475,9.592250907119894,6.0771811057636755,5.519455621024791,6.048287900505913,5.270685754361601,4.93946252606535,9.104463074936954,1.5667150048681067,7.312423662073364,0.8229811683187481,3.1702124756103323,6.993842128948013,4.998394958689371,4.703956606033479,6.624649484737736,0.10128367369234051,9.781359905953986,10.036614081949013,9.482683008535055,9.81717830079293,5.318852224832577,4.433160015335718,3.5036716648132793,3.699437949794391,8.066578905303238,7.077236444559825,1.0982432603545234,0.8990252868756387,1.9039061307440108,2.8339547856407177,5.950007525032532,6.371914768446141,8.734586223752212,2.3357455115719405,6.649341993487003,5.63082474979343,1.2446466643712895,4.9626839213650875,6.838687519446291,1.5875065857326298,4.101755625496265,3.7546172104797937,4.127619794441412,1.9929064780384231,1.559433372121164,0.9353483690609953,9.649172838659206,4.512891352255606,2.733306718867592,5.409044963081682,3.2965858737703213,9.955374295443304,4.182679474329467,1.7909298277817332,3.3400251237486955,7.583107774333895,4.290238146798906,9.748493695210241,0.10377489424013833,3.6818298750650724,0.5417923879763208,1.8253559680437625,4.255148627380887,3.871556797310114,3.4493511351869,0.8734527019775461,5.215768632462636,0.3851636263725021,0.35937141432176734,4.66870610408147,4.9198318910329455,3.3842616528344305,8.047434056634872,3.2894192786708243,1.0405273327497921,1.4089161003837947,5.65452909153235,10.057090994988169,3.8193598593132827,3.6786914560031803,0.41221510530243577,8.722978333674975,8.155460553032867,1.5773693277281686,0.7716322659437623,5.866328161073675,3.1884585424685663,6.108476341957591,3.369602681728212,2.4167323375678884,0.40717100690272223,4.259331112213622,6.096869747226007,5.1188713684536475,4.559994341372137,9.424773684493779,6.936866380718545,2.3227126049645808,2.6434813973774873,9.6507378015778,6.44436975716071,5.69546810188519,5.882231955426651,5.678861934658783,7.5297709990875905,3.1408030619255123,5.086485896163037,2.1211696706737393,3.3333268172686137,9.212941660909932,7.026600983661952,0.8129946832763556,9.170046297923085,1.506223594939653,3.6148770465067903,9.220652170275649,9.154155756294534,2.552122198637208,7.374692520521348,9.140847288252692,2.873528221473687,4.106802769730151,9.29107412382665,0.7589539210591466,6.802902689799241,5.870125579763618,3.11884944273213,7.108712801970135,7.844478249920908,5.347075499455313,5.621554710778824,5.575406083909235,4.318891176596799,5.268797245591538,8.880158798163315,6.155763957858979,1.953233970246926,5.91383720337933,0.42386029108042667,8.66353793128945,9.328674467614162,1.482570360433515,0.22111997341835324,9.917757434950794,4.477477804012182,3.579556824718253,5.045096185467187,5.104546230600908,8.541726149142765,6.672828219613797,1.3921766252166146,1.8981346294938772,8.006982626138718,9.482367228741436,8.472149328430662,0.5563413259661453,0.3060185034381745,6.144730638791147,1.2361688511742508,4.5908678036218005,0.5327051571698193,4.250830598778294,9.009230852779991,8.650614513012714,5.33047772732167,2.851242040787807,9.13802412021881,2.685124834961128,9.264693727792164,7.806677233696686,7.116695274347499,0.44387647246122197,9.808400088813459,9.700755001931872,6.7847916246853845,2.038874047560031,4.172616038646346,8.806423672894548,7.080426330457554,8.639532082142813,4.36776530889237,5.75511483278107,9.9154473619545,3.7996259783009445,5.233704126914633,6.834003358187125,9.54216712712551,8.064721425640748,7.908555354050557,6.9398137535198785,6.520242547260772,0.7909049811153078,9.229574728496543,8.084611040445829,9.525763881824567,8.144114041961487,6.914593760451048,6.667106002619787,2.7527324575500534,5.310331001231065,3.421223946095704,1.4520752777373147,4.086494623037737,7.42913136105725,3.581162212330997,5.168790183808536,6.752570304337599,6.869228609161839,8.336025375427395,1.1793011087706051,2.301206615125402,6.780541676416124,6.96181812062607,5.932554781740966,4.085270694763921,3.992625053179659,0.6484998769281368,7.547156696753882,6.8435643583937456,9.279611947666746,7.150449783581481,6.545852497162452,4.0275890121196545,5.180797987060723,5.849455046417317,8.325722031970356,0.5753497874633505,8.079953377331723,5.055986434320163,2.5463075968133597,3.7521924892565783,7.762075348071195,3.1457959539772795,9.065883759525805,6.796121707025031,2.9955626711308136,1.2881637532706613,5.221700574370214,1.957928870731318,2.528378549653134,9.070189039129044,3.0750938323631782,0.18493384183333675,9.195553936744252,3.4117076670883795,5.05780558769437,5.396769951021264,1.321674560614583,3.809585397334325,6.6297244796316,4.391589949338121,1.5090143837909142,0.6172386995879607,8.392038428653272,2.374732455857007,1.1355138266320464,6.881342686806326,0.7976767199456968,6.3047733486129305,2.0908568169343122,9.965608591058752,7.255554859614607,8.73177369976146,2.0814221255150733,6.317396787440088,0.2525350588207086,8.773711133919067,9.108124151448939,0.29263534096843447,2.9926869131125255,4.991789200937932,4.832110863898253,9.248359215690021,6.949006695030974,9.495204437373813,2.27361618045985,0.77821602565868,4.052123242587681,1.1580377997699354,3.6810233912696555,1.9750315193295975,0.2745288812403811,7.824800347865718,9.397750897678849,8.383255099264277,1.242367307149712,2.037460865202556,3.6633653012156,3.2172169997672984,6.0601623396281274,0.6927441662887678,1.9906779953779719,0.21056451881154006,6.829774023297161,0.3393897284523971,9.2080227646104,9.968412109414938,5.841140281077101,9.232248794515984,3.268600994062838,0.5502221351579472,2.4431949382822893,7.214953428360351,1.309604233442161,4.629561824883212,8.586503009967192,1.5129442657259018,7.093743546203625,3.8780916299698087,5.427437351582347,0.5048405704930369,5.63473718255137,4.416947355084,3.6754403133534552,3.6797160057625566,8.000651443882383,3.674797857548908,7.4619367820542895,9.166447093743335,10.069290100716044,1.2567926904945792,7.246413719044114,1.5700359795419772,1.9144091830273657,4.5728153632946595,7.495886041456389,3.8089593017260692,6.582670634614013,0.36492356234626644,8.613732528357287,2.6047130842932287,3.4946094617544055,7.726280587930294,5.514040234250081,2.441408069812694,2.8372979721017666,7.018095112665869,7.791605332920923,4.566294085935745,1.1381766228677548,5.5723380730538175,0.4846879273820591,6.547500142976445,6.61314144218426,7.575353167040513,8.581393759090721,1.7934279790522245,2.454339633297671,6.0860724868703375,7.862885558217873,4.761021422777798,3.743233686101697,6.53305129709031,6.770694738541181,3.4213762725843355,3.2677206551181825,7.962075331320738,3.637666512477482,7.463689166203622,5.286094505792924,5.654310932959505,2.9873661304814703,9.726653425716572,3.2927739742956463,9.847161112240473,5.1418247708984905,9.568323639435109,6.227988023542421,3.924949336285335,5.3346390254858225,3.7706027114508034,2.8804310473524164,4.5459896303906895,3.2460671427864107,7.905744290972526,3.1203757902875706,2.251353049897744,7.97440145309791,2.823471798203867,7.527773708691947,4.239364447508158,8.156992411496857,2.870274734919356,2.6198170922624375,2.317527919825886,6.244373291443374,2.814853138010409,5.253999753436037,0.9404801225156988,4.726508802273996,1.6124634154977224,1.0935096355802165,0.8687987968072929,2.958245689035297,8.952138184462957,2.3420973462255623,9.297728859994765,6.394980585613712,2.868818199136518,8.894028791154247,2.7835070711197796,8.310472425605102,6.509646508192155,3.9336826302511607,8.937040830551572,9.722809245598256,2.2421326822883847,1.043890626788666,1.2135306325555595,9.254784600041974,5.978256587652465,0.3647236724333468,2.583200650548665,9.156230627501722,7.364825560807837,8.887095243444527,6.9498861339069276,3.242528682268826,4.637825039640299,8.62811216391621,9.199048704757947,0.7530548727021079,9.553144121653661,8.477697713724028,1.0799805163902443,5.73856646052934,3.2266377552755343,6.695099459074722,9.336636258035206,6.16837376939546,6.785119699962712,9.987602093610008,6.173039533886557,6.287267266282878,8.185545058747051,3.0589546991033556,0.72873671461803,5.164418138967246,5.246509495065476,1.2439348719230736,2.4409052444522206,7.840242334618862,9.420265144671998,9.514887250064382,5.242403376401272,3.5085656976548996,5.9283796991524325,1.1322735836192277,7.361327759958145,1.0666034355205434,3.8521681251206608,3.2565417744790293,1.6967036417114545,7.845523147308191,4.496651527580748,6.963876699711328,1.880703005726092,4.947691050827847,0.1902430142845656,2.719351434271382,0.6497363923431164,2.068654987741627,6.4392443873413665,9.681296916197544,1.2258784489023444,6.561005569214963,5.4064671085391875,7.525797715096296,8.899170071795446,10.07628167386497,5.420330365028449,4.632157198156587,3.8210197907699017,1.8749512485107012,5.722270527652904,8.508337071392338,7.077850096533993,4.442596581145672,7.9400553261841695,1.4376862072943242,1.3873992812697544,7.01722238376347,6.050726315919199,1.2504604862721802,4.833643513375445,5.9238016874224915,10.019107043334634,2.042500291650844,2.0546472950262684,5.163443790066884,7.224694613486262,5.2951118699272826,6.497371969051244,7.557190276402112,3.3955113495671796,6.573867069022421,2.8656110709831495,2.5107263924277246,1.9312374763506357,6.695308461707514,4.0455674738537395,3.084603055250208,8.589769623571952,7.268405217598634,2.8988316558556426,8.949213210323526,9.182992438530244,4.864775577752074,1.224346916129735,5.713506932394663,1.6919467608291971,6.048248203830346,1.7256577945610463,0.9026273797413008,1.5548410111385658,5.299100620423049,2.8670751835237174,8.046280281216875,3.977384583327548,8.136110874223611,2.1374889430800215,0.5418038710455252,0.43297564779182884,2.8282217429998124,0.9377508453113269,5.851242356465972,5.315159672285252,0.5596938076048751,5.282384303438214,9.425674035701146,6.746699608245425,2.4463791261460055,4.77138991518067,2.333121929121469,6.875693762058359,9.331244884694817,3.188885611937222,8.829568106227363,1.7741636929690774,1.0293924540890709,8.873684341180711,7.715260135549954,7.777203299848052,3.327221169070589,8.479800620335585,0.96456366921007,6.8188411050146005,6.999522591892464,8.522096721973071,2.4373012101766167,7.329447762296079,9.376354833247175,3.446761473332014,0.649858467548161,3.258106856973193,2.165169113140033,0.11291560158534822,0.324420061353372,7.6557288738376235,1.8616235175842388,10.065218395986445,3.690920613677031,10.059298791444261,5.913756220985442,0.18157778631124213,0.1191790924568358,5.206330517806567,8.965730018357826,3.4853056603296984,0.4910371585047234,1.8318218247743023,2.9997021001935065,3.8478235066982824,3.413143556512077,6.940681602473795,1.6915546726324426,8.07623669525234,9.153431764688841,5.219460415943564,2.9459872867315484,3.26702199529713,5.098085974865156,6.473742287013579,3.274827758328045,4.4494088817584565,7.709285101406071,6.730404014889435,0.39784968557526657,8.895465599020627,4.799010397254575,8.746271546510995,8.118414267980052,0.3104772138071298,3.313155988628518,4.910867514651473,5.7454452589392675,2.849996994596806,9.834738095837873,5.627490614101462,7.405131925817381,8.293789605299269,0.2724927810300758,0.7253292894787621,8.890351581438606,2.5999914269906688,9.427105508163114,1.8168736215208936,5.50298379676085,0.9921250303271888,2.148209500084459,0.9272757734123814,4.118253421464881,6.202979107816313,4.647649093610253,4.0119309766520805,7.476074402666104,3.452040710041069,2.6646146048388752,8.268403829711499,5.433169811569327,5.391029060761111,2.8902010483720653,8.211499621180879,4.033000473285872,2.2464545930869417,5.385451212309652,4.15184726244995,2.99190848817364,5.843990832588769,0.2514826476901887,3.33409766951295,7.2196507262588305,8.53595171107184,1.6738431084341054,8.366161885747854,3.650465857613312,5.800590724998981,3.612501208475949,1.174991019004914,6.624391050490299,6.089183363596472,6.746488404130339,1.0470464814935032,5.438021790374085,3.9499199696400167,5.6723516855337826,6.54757662504187,7.548931434653653,6.882697095124996,9.289556801336497,1.131687690608536,5.966041663141534,9.97303190394105,2.2099071045887198,3.585313148806182,7.4549304318174565,6.457337570791273,7.890148079434102,5.364690979755508,0.6308047506991964,6.633260550643735,4.352768485028612,5.615808196115765,8.073236059615482,7.344799101584043,8.569925735814627,9.492908190475173,8.206592100768692,9.55357537800959,3.6525398303500567,2.4712975731133713,4.017337665588774,2.7541079350495146,6.729073089225476,8.389025120743385,4.788569332966182,2.1077343253117364,3.5180606756557586,5.626789322486158,6.459484755397364,0.880707878543343,4.512569709958913,9.715029791302396,3.6013626490033013,8.461945718480093,5.103862453946277,1.3617808127213782,4.543088555309304,3.908871733253325,1.205700789224915,0.1948077423329874,6.361981420348982,6.0216835616798,8.435485321980023,9.577455245294486,0.6928351395638165,3.9484545015491856,5.742518987205445,7.871800998649207,6.897265971639281,1.819966255769041,2.1340713397180178,3.260658222554491,0.835148741698699,7.454234449976118,6.32549795447981],"beta":[0.8774748699110256,9.590669361810306,4.313807037133763,7.207610911437747,4.627374123228835,6.469044059513331,8.935268257026573,2.1408886164285112,3.2988031042098798,9.538445066398216,9.895229857521871,6.377278270264286,8.085642655373357,7.147471817168795,7.42711048604338,0.550687429131158,0.46871996438058383,0.4414142609959514,0.652303865235586,8.503854154704992,2.5592827631136594,7.886195494803736,5.384610385715462,6.864459522401815,1.8957083789915008,5.426333721820111,2.668316329799716,5.360017287463836,9.703008268197655,5.279909429962106,5.89947578360608,8.097243238329458,5.902453515481412,5.8029197076694174,5.371868126035852,9.02811054138923,5.317921621786995,3.9459456126942727,2.330110014637432,7.550371858887605,5.751084291881689,4.464070005985516,5.336341325184083,0.7724917540115505,0.48090779904035974,6.109249096411486,7.43177086177081,0.8737555432272924,3.840500173270638,2.174302998760189,7.794263077040739,3.0149767546339046,5.721314055771835,4.901243243587163,6.390100012120325,9.31628259122545,5.87388626127687,6.842784775521377,8.40305209319251,0.6155211181018626,0.19147388823196768,2.7484707587403334,5.498376936365307,6.160322908947699,3.646333666298198,8.425420714913106,5.151623651419232,0.44638924839061944,8.027036599188488,8.25147170152423,1.9714287396012597,1.0204660767459095,7.587333453393924,6.361092463760674,8.06158174149734,0.6311875324823156,4.948074588590036,8.026559128939066,1.074073028644118,3.9915988132659352,8.43342514069093,3.320280281859873,5.436024834540255,6.7322749254216525,6.081528425835522,3.3493107196838623,8.875056799249153,4.252804435090107,0.32085609868608855,7.203441255407709,9.714036410943018,8.118545575940166,4.9977318695870405,6.473739331269925,4.583160584051047,3.797399568209827,4.301155043833104,3.0634112071460007,6.97401361603714,6.5780393333515,7.119115358699523,3.397987291802571,6.710675225492923,3.225704141910699,7.440383840904236,0.5063259137181596,3.626443148905991,5.579301048418225,4.147199122579893,5.271248241033761,6.447676820471468,5.3561171372512835,7.767063326963452,9.132588777835755,9.192923159375104,5.321038508826014,1.0065311884254524,4.832983017889401,7.766309673200215,5.278350480190832,7.831542015616552,5.326599893950554,9.061438710283287,1.3458342278869107,8.373509932917493,0.7448899054483936,7.469467615643876,8.95855949916631,6.5035999658779415,3.3542932890399335,5.738742898511235,3.1911321016751226,1.2057064086742186,2.9454173902675773,5.62214366274941,2.4350846688304184,6.119138305228133,9.581828601210493,4.900751294480583,0.9033199458952489,7.531169526140131,8.421340678569633,4.125096950072175,6.7190363256920485,6.105342415385226,7.364019889907713,5.54575770910618,2.3130668639827334,5.19430312385126,6.031608886834382,2.890911583032054,2.1509599343247543,6.350922537692185,8.56810274009369,0.6002897419043672,9.50932529466652,3.138853043205301,9.929095931276095,5.230522497995895,8.020570010547987,3.0934978726907936,4.596350239442934,3.921456872049438,4.288870759447585,4.4026940748363455,4.799597942331359,9.812380090685197,2.642241522911646,0.22867418577598322,5.085045482213594,3.7120463937083414,1.1971346496837687,7.791292187742036,6.492893173534998,3.850096593526029,1.8287062849489777,3.4678294460483317,7.360160165210809,4.4424564635194965,4.324300062390011,9.744430828836476,5.665767384732673,6.174203121856129,3.98272936633979,9.516908067812894,4.297444883237297,6.367510922997894,0.42866926600147337,0.6570371744756164,4.8093194660114875,0.5376763010809403,6.272059689336606,6.85141003861767,0.9229984705164828,5.472711644983406,0.6574268981292629,3.994394508055499,4.501939051600734,6.904638789911412,0.12776010995031886,2.9039561645592182,4.1126098774775794,9.531329742077604,9.050722752690357,3.9063448161680725,8.679842299053446,2.5450534780432066,4.181949653559052,0.7175331452626964,8.155682971788451,5.171441233794448,6.320778006496745,4.849445202791555,4.34852793146549,3.6096052873694773,8.633199948298941,7.070547099376216,0.913702001911496,3.040823947686264,2.05400527492422,1.5017514637003426,8.917410396269412,6.77614151119555,7.124304831927228,7.558365745070583,4.127245538994524,0.9439264280148162,4.327908992871376,4.954711321553209,3.6689548177169073,5.7320961900340475,1.7308890408860766,6.815229833607909,1.2339397690606657,1.6073198847228243,5.125316156475742,6.315974358254293,6.8520257242534495,4.34967452508344,0.24330597470591622,6.955297983262788,10.02530146038752,9.675981666814277,4.085530646546391,7.936813161805668,2.4708839070104793,1.4168797902598418,3.4855692095717816,2.038634248159883,1.1379761345560757,9.904562115101182,0.8729672810194676,9.435243738271032,4.440559924839226,8.575786862538076,10.023105584110398,6.621423459055624,8.683349600688077,5.561269572985932,0.9120909554253663,9.05726618493413,2.5656663025016524,3.9314398763304226,9.521379175702863,3.552297203966317,4.983459602922628,2.1006061640011353,3.714109841698272,5.793595402189986,4.381236682381866,8.840745948656238,9.718606885887896,7.330063159536197,7.846307297573267,3.285774306015783,4.691259817997686,1.6451550648375801,2.2482067041738163,2.9847865418649677,0.4385048711347638,0.28366025141494544,5.8381009548462455,0.6715091199032729,7.228216224945351,9.639935946863503,7.905570985967794,1.3220754317715455,8.116529184008419,7.622804825071272,1.1978508820462297,10.007421028160286,8.452098709065593,6.550001659972686,2.008562481788161,6.940586936368495,3.201898211413825,7.815660510362716,3.1475756754652484,6.19829198387702,9.67061547365404,9.620920043000975,3.9890807572676645,5.982781775037098,0.3171718357049834,2.817610404439468,1.8643313725415434,8.658963181652092,6.313371051584619,7.760761475822582,3.659240103051622,0.9152455644224332,0.8673673164070949,4.368010157267721,4.725140468137734,2.0261302538982573,5.0907412795293485,0.9977500743479383,5.686057781344036,6.829892742350626,3.9361886212992614,9.225315136735956,2.1051380665228403,2.742086266645647,1.6925554567947554,4.387866384894854,6.707303526938322,8.952957665289249,4.896723356935929,1.2335343375235874,0.3697365039961341,3.8280360077243336,4.306775660388397,8.28799721712433,0.9536788074647328,0.5074916902865166,0.872024451137483,8.701507868731406,10.035841791642746,8.221365222639498,5.451103215057273,6.655986258931394,8.975000235176923,0.9530560936339304,0.7638346896829361,8.439509123600443,7.2829593274662265,4.671966042660154,9.600099652711009,4.761204747006062,6.895021489159152,9.55661086921551,0.32650283836394667,1.849843187009128,0.39276392642840763,2.146164422441026,9.65975983127874,4.526034323796308,9.174025665166289,6.901045197624191,8.357363537332665,6.393247772326995,7.608786554712179,9.127120500012092,0.20899442211521171,4.172225754746532,1.3811592697461994,2.583447153939058,2.2850409018291495,6.8051752091251,6.730165828170322,1.2224998469713078,6.115049428597089,3.494168408778402,6.5330153712797285,1.7964350321874933,7.486713264777348,2.190560961235717,5.557113996068967,0.5804297652271638,5.220773338293713,2.080578591622446,7.6319986858363045,6.078254579989672,1.857147857591268,2.9988969315626313,6.701912750919181,8.826924938906226,9.968616511962638,7.884516683363696,2.746464669772961,8.291259304389573,9.773673387893133,5.0283258255499526,9.601191949027706,1.7234918153842926,6.516055555248054,5.423492314341353,3.220160568070536,1.183224844535713,3.962324015849994,0.3477496818164293,1.0414356792420754,2.4312486981820802,9.172321411069094,9.220376382878303,5.595123330470502,0.30797178391826596,3.978619571706774,3.980608617799535,1.7138105512769464,0.6016210992648728,8.586765608066049,7.283874112050096,1.6912631437520576,7.021487070582919,9.33983747616765,10.050587316536644,0.9517063035775507,2.2259854599562745,3.4387189677492658,9.56930118600519,3.0083179560441597,1.2419876159480436,8.637597124232416,9.956666605466825,4.493356249839155,6.191430298336105,6.355923862011623,3.4952336629775194,5.337676430698162,3.461653717877673,0.4660843952830994,2.6340463200481024,9.0101942516929,9.780463462560283,4.894154658207712,1.4271280218426896,8.00197678393774,1.9752120234788184,0.9447241030171692,7.245972938475573,9.394624694179273,6.0027860127897865,3.359487345865324,8.511218017549783,3.525913842346655,6.167680249447407,6.087396639071775,8.961894462305063,6.8343173547936305,1.3571649932506369,7.756450608226903,7.2492914257816246,6.175791011366808,9.527298148393578,3.1054654468468867,8.34543408444213,9.496330637070884,3.750206918525998,2.953785627320562,7.3663315314960816,0.5773557148687324,5.6673339624362775,3.160174942531362,7.029978661811691,3.4674867872140336,3.1730541514371158,8.983041124669379,9.340505999236388,9.397627070584118,10.006392093125742,3.98185792133805,2.8095152026870074,3.312284918095827,3.8419894741214544,1.2348427132690776,4.938660029205046,1.9817524192781955,6.007260015575315,0.29063906723417066,2.4977883846034077,3.3011656856103344,0.20879925612677477,3.1672742321570224,2.034714903105157,1.8011741760876387,9.383490142038509,8.109244255619483,9.548191903040752,1.3868608355215262,2.188314166097176,4.443298052924479,5.42869079237483,7.90403986840345,5.59729080451879,9.416705045972998,9.316598913975032,7.544252650652149,7.50262974466,1.608331473714384,0.41001640926057836,1.778961569152182,6.653288152630381,0.7507725900199923,9.70070164256117,6.604000741681728,2.240307899338101,8.794594273666423,6.086601641050317,4.4837263804060346,9.664855236761932,8.216302840104376,6.176389106839905,9.074833123072919,4.881711120851723,9.594767695300401,6.71524310766993,8.670390349187032,9.886159436806334,2.5575997844347964,3.4858782926358933,2.338799711187165,2.768166364086071,4.483882345357679,1.9590391980855504,7.94440945594503,0.7705438644794537,9.8766257994785,4.707390903709863,8.80977916410596,1.0379049531779971,7.553228795053965,1.575508823249061,3.2796345600537213,2.0803348466212146,1.4666179830063975,6.104948485383168,0.5889163882404057,9.377753200090773,7.725403563491744,3.627341433721829,7.213229256940368,1.9380829848310888,4.951529473198366,4.196370022182734,9.195858317843134,5.574001225762752,2.0013575666117123,1.6123124151727852,3.294810486495645,6.574861887964613,1.8354975286729291,3.8685011785127,5.017621845106059,1.067354799481186,7.016037593824406,2.517103742185862,9.120438687881846,2.204525486588045,3.9410648021235173,7.084351749860358,3.760140694903036,4.7035165835621875,7.119184361460815,4.688797926265931,6.403033118931997,2.416170853619062,7.13869483492385,4.409822177439586,1.604033789472834,4.478754165021671,1.462166946191521,4.139570343121681,2.5346989201611314,8.818951372595214,3.558692701135251,2.0539746164028916,8.100951587970213,2.817916645392793,9.344615314217714,2.513966157216563,0.1283632514061316,3.0024284669241386,2.8062333361217995,2.9919449681855204,0.8163680954904161,7.475554910653314,8.442789984703557,7.170697379559765,9.522462664787618,4.470271171586132,3.2052777993499793,7.214529119542858,6.037639928305229,8.884917363772084,8.187747953538729,2.5311591024848457,1.4137874779468795,6.36941531841817,9.55549184374549,1.6776250024069328,8.334704010349771,0.6635821295604004,6.599227857033354,0.6335636699735224,4.027004110333012,2.103839437032362,10.076104091166572,4.986661401076725,1.8413767377425616,5.566441933486354,3.3385372628930443,5.686625738581176,0.7752011768549004,7.4182358084335664,9.470878068523074,3.589350145388437,4.0042148984617905,6.131457934418094,8.04511222717122,9.194278485622373,9.740130798739743,8.126884586529254,1.3950874612229636,9.502060643382094,5.067025139806766,5.98328134752988,6.143960391590377,6.878535403479368,5.132465122251713,5.215104539459308,2.3235432024659075,9.48626323986474,6.349211241362653,0.3591972475351456,5.198664890368303,2.1475979908827703,6.638268409437224,9.660777432268006,8.474732163578928,3.43662804128567,6.214300636266298,1.3360094035177594,1.910974690575289,0.16264828324918704,8.84212496001755,5.722152470674011,0.25180745984251673,1.8944486532345572,3.0908387479768895,8.659074078154104,3.747277107574909,9.645051390746636,8.119776811316106,3.671347456766625,2.0946713987754273,3.431427859184668,0.39967949702657257,6.360770497130902,9.582856193497205,8.119376545265474,4.549791081190779,1.5678640346843142,3.843940645973505,3.8079413666467987,4.37607202043071,7.751454138021947,2.504471128731831,6.149077979808088,4.836423334507112,8.86530291511874,2.542673033453129,3.049124079078238,1.616192346599763,4.494500394412219,1.0347358404648754,3.2795706924412382,4.863683376279868,7.723608017982204,4.363945631414099,2.49432403484928,4.014121633006207,9.343808639529511,9.50215881983189,1.495069657072683,3.2320375351276653,0.7768362354189872,5.429701644608555,0.8720512658300249,1.1760718595591602,5.311036862612783,5.511135053383118,9.243907902560155,7.364501868839525,0.2715354227261678,3.7989592163750774,6.7713523124805315,10.013626954397054,2.236861540869044,4.438362982713317,3.1791760580970174,2.5559964193732942,8.27438319936097,2.376221317465226,9.060245914776797,5.838982324514729,1.2835639634138096,1.5412744728118755,4.2722313333261575,4.67398442177894,9.998648125544786,4.20562620216655,7.470372008651062,1.417751351901999,3.6085484607346507,6.097291663270054,0.17879228481170842,2.7136599174636067,6.070347934560029,6.05891864365681,5.7206626432055,1.966746212584649,6.79024234373917,6.848089978005847,2.0986798832527875,5.060298394167068,4.61471596146356,6.290200536811132,4.2088087935060665,8.822269646972709,8.359417289328377,2.6711802295851017,7.186415476139176,2.0878897366353355,7.120594124627761,6.852631876292072,9.200078305098993,1.9341987340853395,9.86074129279839,0.6623267279279309,7.624435776774856,4.17341557792348,1.2568745480741517,2.8674903860864687,7.846063009981547,9.888019033278331,0.27156865786332574,7.339050006738767,9.352077722622324,1.0227600790643687,1.1126565520836729,3.6159961341108793,1.8571001457247571,8.511902941902429,1.258200381423149,2.042675091663091,8.521481827007381,5.695486653371746,9.125370774999583,2.7057877136783137,8.189440365716257,7.955067573054903,1.1662151747149063,4.785178574542647,5.877503249046473,9.104147064813324,5.6670821475122874,1.6547326942184215,5.161962794847372,0.8173999586452351,6.936843773746794,7.46683488735093,4.1628748925660854,2.136074253461022,6.653835849534888,6.449106064615424,4.869526120929148,8.78423107430365,8.922286452932843,3.3527463734080887,10.064006308160517,9.218279541088927,1.8428686977570874,7.255076800126984,1.6776833325502083,4.450867197674388,9.56839178633073,0.9406037488281814,9.053160060699156,2.572702041176611,9.712205235400136,0.1678012188955357,6.057609137450054,9.47644264879305,3.462219625126799,0.1225587493392565,8.748762162372305,4.386766873101437,2.3553295335382773,9.86173720278731,9.311971962539992,2.620789293287644,3.3073950453199075,8.921422994512879,7.157510648804434,4.62622074006578,1.9966924771184802,5.213633581090049,4.865034670033749,6.2493103507558025,8.511989453172545,1.0964338862995082,9.56692256491373,0.6824075880990698,4.176758124569917,8.036836097419968,9.39224289288622,7.268678721860269,0.6805246006940501,0.9071168416421748,7.208972889988334,7.388880477660817,9.620446047463552,4.671972173500647,2.777670429692629,3.677604787727322,3.5630492689972137,5.263095626587395,0.2675532420961412,0.4033274768209182,1.2715592371933249,9.686223286283225,6.0580092880736,6.373975136919349,0.26218928732137703,8.758266631490596,5.002975130907179,9.563277246689688,4.288486211919977,8.733539995638077,5.629837886232236,8.900447815413715,8.49442697468742,9.093315480577614,0.8457973239173121,3.5988947806253746,8.94964067504989,1.4356025199395939,6.230273772055014,3.0709076267341406,4.695032507842691,2.468669533451453,2.692480235605439,0.5849880309315013,4.120403813779561,6.913573562161421,9.897186600814374,6.909297569812296,1.6170579510166627,2.4792585192069527,9.38016062674924,1.8800068711923679,2.5640524344988447,4.614899705860353,3.298557036858414,3.733634445499976,3.30103450251225,1.9561031084937275,6.645957149461292,8.499610962083656,0.6274110896503381,6.981756087167034,2.5470633409779775,10.066167740846321,8.449850272181896,8.989524682629435,6.477458074432773,0.8357958798650332,2.2414059739049863,8.522967138015185,3.6780903459821235,5.599756340630924,9.34597768055609,3.926328523233431,7.724935277068112,7.010325373195284,9.734470368929047,7.508438901841787,3.499298321565383,8.591186145656037,1.294791275995213,5.210413157854065,9.85497770122753,8.602870363990277,9.9574577100149,2.3662307320267417,5.530809619666961,7.433346655344148,5.938838395538466,2.3858942499165514,1.8918902735025855,6.342985169111506,8.68878423377063,5.849313641060947,0.26840016815448553,10.067754372882233,8.241042194517037,4.2782179740363,6.060405031387223,8.559046086883257,5.021163608676004,1.6207535195868283,6.45431763597275,0.12726259159600897,3.4633279241753723,2.2673481250861482,0.9041494616949385,6.218657287712965,1.118617833741511,2.8714452159503723,7.603528023647103,6.9138035510095985,0.5109840327275327,4.460267871320237,4.885494951503746,9.350012607401514,3.9456439424110457,6.702951473168095,4.613770011085487,8.5747326487562,5.819163683538292,9.461897284236015,7.024648045212256,4.106632829524504,7.3056608630361115,6.792472052336391,1.6145185118542682,3.4697651132040064,8.960644783503392,9.842184048358416,2.602960393323186,1.1333545645957366,2.2712415569715017,3.0270939857512458,7.310139957861883,6.376549486626161,8.209264185794892,6.010119975334944,3.5065640712150037,4.229726485139042,3.5350352426206677,1.5790583939336367,5.9901570969364215,3.6792778837990725,4.564521106025767,0.7738474623804924,1.0848314255315294,4.497477474510244,6.213322922702702,2.583128102068162,0.3751882565280894,5.536343791399718,4.4095420415127595,3.583845872530471,8.317682713362027,5.097546619842041,9.793017404441823,2.21847507366002,0.7885884690444355,10.071340712493672,0.7603658106749832,4.800738899216268,7.311794630530135,7.065042885995993,0.25832907921379256,3.1211484203121698,0.8444886599471001,5.505058656011316,8.997441004365545,5.990965458672803,0.887215685384226,0.6256933700992272,6.778287627381114,6.118414784082885,5.8752719259085175,6.379090887625786,3.9370112393079926,4.9463544183672195,1.6448465647827892,8.64512155689447,4.645554560913909,1.109748835455906,6.222846534605866,8.209437576450952,2.58431733223214,2.806429610472665,4.512089633457075,8.250641792814813,3.500295932504218,9.23385681094505],"expected":[4.4712529342452285,9.207549003806651,7.9943911793003775,5.546291753675451,6.700172414959821,6.102664240971573,4.088541771081664,2.5594542443533097,6.497321201663901,4.448151620424198,9.280622285115733,5.482278028976488,7.829970995214781,1.0499613404457708,0.7995782831318298,2.9863576071563136,2.0533007315069884,8.185857281010557,3.1985423348598263,4.641447115760855,4.082125962522191,4.1368574433599825,6.282473436415714,9.14707207592077,2.515827829535384,5.785819740397237,9.521803194057123,8.758064292274133,4.074850519266877,4.317235835142672,1.2608768417576743,1.7091696891838648,9.048565505333864,1.6097295237277476,5.298257298331238,6.877937478451628,6.055615867388073,7.855154313006915,7.260475150164423,4.850350752675622,4.374708795052926,4.545956224305119,3.972590659245332,7.6304172290852685,3.8115537974824076,3.927428809463407,6.576033456677634,6.501767022048701,1.4436509869285752,4.8933172955963045,6.1725256970261135,8.550169831392369,6.14380589734105,0.6443111761397312,7.57799176824762,4.690545627365127,6.544494044728401,7.426294681766474,3.4704284264108987,6.805236762698819,4.476456206208974,2.523921700756151,7.243872943248663,1.961809078958825,0.300919864024367,0.9293004702667961,5.850862970718049,9.546464142932278,9.164939668811554,9.593631025886555,6.461755998130009,9.22575807560039,1.1057345917082628,5.847645362316902,4.563565316268967,4.705819678680283,9.455107437904362,2.7218984720526507,4.711488405770525,4.854439949277726,4.103657595116168,8.505242901726106,0.8211990800883394,3.6241027149646166,6.9190871496387825,7.05155772067423,2.266015096428746,6.8004396629417165,7.352572948655857,9.508643110619216,0.11135502585864812,9.933090357356939,0.46730402424116624,0.388373184095394,8.940904144261742,8.0654850757054,3.663880261591488,1.2153239587213083,0.5249349856698869,6.067091986319534,6.199217003259742,5.280456044556245,5.439091495029482,0.47384631874218586,2.105419369865593,0.711593972071518,8.033145723803008,7.68359912137279,0.4706789029824109,8.83142609766628,0.5354451497578426,0.36081421439488215,1.7784920144859373,3.024088717231186,1.0794956128539268,1.746550269479914,1.471562556184478,4.220318145734707,6.920947998123756,10.02472675610732,6.408312350620051,6.609395808957519,4.868893112354188,0.25265807215719016,4.81496344221803,8.971173375549348,5.295568942726884,3.27002560587911,5.734535919753453,2.0923998304023095,4.416711191762909,1.0784987780589872,9.249345893899003,7.798493255906447,0.4532661784040214,6.962878071535398,2.5911506170967913,3.5238979584208296,7.791913454497676,3.9616227432189466,7.749770257556087,9.320466972421874,4.283338008755514,4.391171928751986,5.030062857326391,2.2263982611832334,4.117333009067183,8.114889497247239,0.42229022926713256,3.7642224743982844,4.297974498274764,2.9746527395066535,8.640575468270507,7.922008556882456,2.9307430209375562,6.276947496871891,0.42545669939638475,2.928672966504726,5.913348092768793,6.613761852318012,2.7456695127214825,4.7922428784700895,2.7605433212809904,9.217243091566996,3.9754198621475867,8.097649046266241,7.270181386286516,4.21435731861297,2.0249092768973753,5.435482137788741,8.523646010721796,3.5616911768725945,8.445500652775108,4.271848185201401,6.383816246801514,8.652807648134926,9.173096003475889,9.315206920016626,4.250894181493331,4.10996434990648,6.888645541217319,2.8745539528147868,7.969898247101858,9.984703696940896,3.684055228641494,1.4999027251365882,1.680553429093743,7.49711727476881,1.129052210439716,0.3919812521500864,5.044073426287049,7.2858105720489315,1.932074334548961,7.822641647778685,6.88584012614799,8.272093300093008,8.51217597875988,2.2471752999253547,7.8749099146676045,7.845721599571348,2.6694659376445506,3.673186234359902,8.85779387798314,8.49246920110945,6.526562752730353,8.667235064983808,1.1962276336641287,0.2961085306416299,9.510843746734379,5.228080205336718,1.0540622483693607,9.745023857047295,5.656072447090776,1.973641419856751,9.083128388587859,5.953012054410955,1.3536755959756808,2.517476811336732,5.947260394578932,3.0725943705639502,9.998773602933225,5.469366668262318,7.125813794467808,0.9902802149969235,2.292835347749478,1.2420657664131163,2.0565762161960244,8.964838843486941,5.5534773318577315,10.092203221911534,8.42323983901196,7.792499077862955,7.8411304033545015,1.0186483420079862,8.794200586651936,6.462704541331705,3.7155332671150543,5.3563446429094,4.669228510257572,4.506996381709939,6.106900807542862,5.5713027413467575,5.11778791489301,5.514941939442526,1.7763676703332343,6.661877762703676,8.779614454216297,1.3355916500560716,3.6570187615676875,4.563161485895299,9.929813032015142,8.494614900532369,8.493338898255853,1.0897114030590127,3.916953516763373,7.546955173591371,8.11814037256689,1.1847007380205477,3.8173098776604797,3.391777449952529,7.241549278747156,4.3283708539862005,5.90801165784305,8.95895026080276,5.338759445381209,0.41575015170810514,1.8008884507823608,9.614298215786706,8.491319582208378,5.957222903001277,0.6473676935733573,0.19385776512382816,7.553050253250877,2.105906775355242,2.240384592909881,0.43296829593316255,8.993124898404064,1.9060073493043306,5.046294665320292,3.307230579593039,10.013977167867253,1.8994326435701736,1.679602936626734,5.568010369730991,0.12639131226873426,7.405231319406258,7.937246000073337,3.34814453965808,1.5141544686326336,7.975520878187654,6.601307840230796,5.032423912522246,2.796010606289683,5.357548977796475,9.592250907119894,6.0771811057636755,5.519455621024791,6.048287900505913,5.270685754361601,4.93946252606535,9.104463074936954,1.5667150048681067,7.312423662073364,0.8229811683187481,3.1702124756103323,6.993842128948013,4.998394958689371,4.703956606033479,6.624649484737736,0.10128367369234051,9.781359905953986,10.036614081949013,9.482683008535055,9.81717830079293,5.318852224832577,4.433160015335718,3.5036716648132793,3.699437949794391,8.066578905303238,7.077236444559825,1.0982432603545234,0.8990252868756387,1.9039061307440108,2.8339547856407177,5.950007525032532,6.371914768446141,8.734586223752212,2.3357455115719405,6.649341993487003,5.63082474979343,1.2446466643712895,4.9626839213650875,6.838687519446291,1.5875065857326298,4.101755625496265,3.7546172104797937,4.127619794441412,1.9929064780384231,1.559433372121164,0.9353483690609953,9.649172838659206,4.512891352255606,2.733306718867592,5.409044963081682,3.2965858737703213,9.955374295443304,4.182679474329467,1.7909298277817332,3.3400251237486955,7.583107774333895,4.290238146798906,9.748493695210241,0.10377489424013833,3.6818298750650724,0.5417923879763208,1.8253559680437625,4.255148627380887,3.871556797310114,3.4493511351869,0.8734527019775461,5.215768632462636,0.3851636263725021,0.35937141432176734,4.66870610408147,4.9198318910329455,3.3842616528344305,8.047434056634872,3.2894192786708243,1.0405273327497921,1.4089161003837947,5.65452909153235,10.057090994988169,3.8193598593132827,3.6786914560031803,0.41221510530243577,8.722978333674975,8.155460553032867,1.5773693277281686,0.7716322659437623,5.866328161073675,3.1884585424685663,6.108476341957591,3.369602681728212,2.4167323375678884,0.40717100690272223,4.259331112213622,6.096869747226007,5.1188713684536475,4.559994341372137,9.424773684493779,6.936866380718545,2.3227126049645808,2.6434813973774873,9.6507378015778,6.44436975716071,5.69546810188519,5.882231955426651,5.678861934658783,7.5297709990875905,3.1408030619255123,5.086485896163037,2.1211696706737393,3.3333268172686137,9.212941660909932,7.026600983661952,0.8129946832763556,9.170046297923085,1.506223594939653,3.6148770465067903,9.220652170275649,9.154155756294534,2.552122198637208,7.374692520521348,9.140847288252692,2.873528221473687,4.106802769730151,9.29107412382665,0.7589539210591466,6.802902689799241,5.870125579763618,3.11884944273213,7.108712801970135,7.844478249920908,5.347075499455313,5.621554710778824,5.575406083909235,4.318891176596799,5.268797245591538,8.880158798163315,6.155763957858979,1.953233970246926,5.91383720337933,0.42386029108042667,8.66353793128945,9.328674467614162,1.482570360433515,0.22111997341835324,9.917757434950794,4.477477804012182,3.579556824718253,5.045096185467187,5.104546230600908,8.541726149142765,6.672828219613797,1.3921766252166146,1.8981346294938772,8.006982626138718,9.482367228741436,8.472149328430662,0.5563413259661453,0.3060185034381745,6.144730638791147,1.2361688511742508,4.5908678036218005,0.5327051571698193,4.250830598778294,9.009230852779991,8.650614513012714,5.33047772732167,2.851242040787807,9.13802412021881,2.685124834961128,9.264693727792164,7.806677233696686,7.116695274347499,0.44387647246122197,9.808400088813459,9.700755001931872,6.7847916246853845,2.038874047560031,4.172616038646346,8.806423672894548,7.080426330457554,8.639532082142813,4.36776530889237,5.75511483278107,9.9154473619545,3.7996259783009445,5.233704126914633,6.834003358187125,9.54216712712551,8.064721425640748,7.908555354050557,6.9398137535198785,6.520242547260772,0.7909049811153078,9.229574728496543,8.084611040445829,9.525763881824567,8.144114041961487,6.914593760451048,6.667106002619787,2.7527324575500534,5.310331001231065,3.421223946095704,1.4520752777373147,4.086494623037737,7.42913136105725,3.581162212330997,5.168790183808536,6.752570304337599,6.869228609161839,8.336025375427395,1.1793011087706051,2.301206615125402,6.780541676416124,6.96181812062607,5.932554781740966,4.085270694763921,3.992625053179659,0.6484998769281368,7.547156696753882,6.8435643583937456,9.279611947666746,7.150449783581481,6.545852497162452,4.0275890121196545,5.180797987060723,5.849455046417317,8.325722031970356,0.5753497874633505,8.079953377331723,5.055986434320163,2.5463075968133597,3.7521924892565783,7.762075348071195,3.1457959539772795,9.065883759525805,6.796121707025031,2.9955626711308136,1.2881637532706613,5.221700574370214,1.957928870731318,2.528378549653134,9.070189039129044,3.0750938323631782,0.18493384183333675,9.195553936744252,3.4117076670883795,5.05780558769437,5.396769951021264,1.321674560614583,3.809585397334325,6.6297244796316,4.391589949338121,1.5090143837909142,0.6172386995879607,8.392038428653272,2.374732455857007,1.1355138266320464,6.881342686806326,0.7976767199456968,6.3047733486129305,2.0908568169343122,9.965608591058752,7.255554859614607,8.73177369976146,2.0814221255150733,6.317396787440088,0.2525350588207086,8.773711133919067,9.108124151448939,0.29263534096843447,2.9926869131125255,4.991789200937932,4.832110863898253,9.248359215690021,6.949006695030974,9.495204437373813,2.27361618045985,0.77821602565868,4.052123242587681,1.1580377997699354,3.6810233912696555,1.9750315193295975,0.2745288812403811,7.824800347865718,9.397750897678849,8.383255099264277,1.242367307149712,2.037460865202556,3.6633653012156,3.2172169997672984,6.0601623396281274,0.6927441662887678,1.9906779953779719,0.21056451881154006,6.829774023297161,0.3393897284523971,9.2080227646104,9.968412109414938,5.841140281077101,9.232248794515984,3.268600994062838,0.5502221351579472,2.4431949382822893,7.214953428360351,1.309604233442161,4.629561824883212,8.586503009967192,1.5129442657259018,7.093743546203625,3.8780916299698087,5.427437351582347,0.5048405704930369,5.63473718255137,4.416947355084,3.6754403133534552,3.6797160057625566,8.000651443882383,3.674797857548908,7.4619367820542895,9.166447093743335,10.069290100716044,1.2567926904945792,7.246413719044114,1.5700359795419772,1.9144091830273657,4.5728153632946595,7.495886041456389,3.8089593017260692,6.582670634614013,0.36492356234626644,8.613732528357287,2.6047130842932287,3.4946094617544055,7.726280587930294,5.514040234250081,2.441408069812694,2.8372979721017666,7.018095112665869,7.791605332920923,4.566294085935745,1.1381766228677548,5.5723380730538175,0.4846879273820591,6.547500142976445,6.61314144218426,7.575353167040513,8.581393759090721,1.7934279790522245,2.454339633297671,6.0860724868703375,7.862885558217873,4.761021422777798,3.743233686101697,6.53305129709031,6.770694738541181,3.4213762725843355,3.2677206551181825,7.962075331320738,3.637666512477482,7.463689166203622,5.286094505792924,5.654310932959505,2.9873661304814703,9.726653425716572,3.2927739742956463,9.847161112240473,5.1418247708984905,9.568323639435109,6.227988023542421,3.924949336285335,5.3346390254858225,3.7706027114508034,2.8804310473524164,4.5459896303906895,3.2460671427864107,7.905744290972526,3.1203757902875706,2.251353049897744,7.97440145309791,2.823471798203867,7.527773708691947,4.239364447508158,8.156992411496857,2.870274734919356,2.6198170922624375,2.317527919825886,6.244373291443374,2.814853138010409,5.253999753436037,0.9404801225156988,4.726508802273996,1.6124634154977224,1.0935096355802165,0.8687987968072929,2.958245689035297,8.952138184462957,2.3420973462255623,9.297728859994765,6.394980585613712,2.868818199136518,8.894028791154247,2.7835070711197796,8.310472425605102,6.509646508192155,3.9336826302511607,8.937040830551572,9.722809245598256,2.2421326822883847,1.043890626788666,1.2135306325555595,9.254784600041974,5.978256587652465,0.3647236724333468,2.583200650548665,9.156230627501722,7.364825560807837,8.887095243444527,6.9498861339069276,3.242528682268826,4.637825039640299,8.62811216391621,9.199048704757947,0.7530548727021079,9.553144121653661,8.477697713724028,1.0799805163902443,5.73856646052934,3.2266377552755343,6.695099459074722,9.336636258035206,6.16837376939546,6.785119699962712,9.987602093610008,6.173039533886557,6.287267266282878,8.185545058747051,3.0589546991033556,0.72873671461803,5.164418138967246,5.246509495065476,1.2439348719230736,2.4409052444522206,7.840242334618862,9.420265144671998,9.514887250064382,5.242403376401272,3.5085656976548996,5.9283796991524325,1.1322735836192277,7.361327759958145,1.0666034355205434,3.8521681251206608,3.2565417744790293,1.6967036417114545,7.845523147308191,4.496651527580748,6.963876699711328,1.880703005726092,4.947691050827847,0.1902430142845656,2.719351434271382,0.6497363923431164,2.068654987741627,6.4392443873413665,9.681296916197544,1.2258784489023444,6.561005569214963,5.4064671085391875,7.525797715096296,8.899170071795446,10.07628167386497,5.420330365028449,4.632157198156587,3.8210197907699017,1.8749512485107012,5.722270527652904,8.508337071392338,7.077850096533993,4.442596581145672,7.9400553261841695,1.4376862072943242,1.3873992812697544,7.01722238376347,6.050726315919199,1.2504604862721802,4.833643513375445,5.9238016874224915,10.019107043334634,2.042500291650844,2.0546472950262684,5.163443790066884,7.224694613486262,5.2951118699272826,6.497371969051244,7.557190276402112,3.3955113495671796,6.573867069022421,2.8656110709831495,2.5107263924277246,1.9312374763506357,6.695308461707514,4.0455674738537395,3.084603055250208,8.589769623571952,7.268405217598634,2.8988316558556426,8.949213210323526,9.182992438530244,4.864775577752074,1.224346916129735,5.713506932394663,1.6919467608291971,6.048248203830346,1.7256577945610463,0.9026273797413008,1.5548410111385658,5.299100620423049,2.8670751835237174,8.046280281216875,3.977384583327548,8.136110874223611,2.1374889430800215,0.5418038710455252,0.43297564779182884,2.8282217429998124,0.9377508453113269,5.851242356465972,5.315159672285252,0.5596938076048751,5.282384303438214,9.425674035701146,6.746699608245425,2.4463791261460055,4.77138991518067,2.333121929121469,6.875693762058359,9.331244884694817,3.188885611937222,8.829568106227363,1.7741636929690774,1.0293924540890709,8.873684341180711,7.715260135549954,7.777203299848052,3.327221169070589,8.479800620335585,0.96456366921007,6.8188411050146005,6.999522591892464,8.522096721973071,2.4373012101766167,7.329447762296079,9.376354833247175,3.446761473332014,0.649858467548161,3.258106856973193,2.165169113140033,0.11291560158534822,0.324420061353372,7.6557288738376235,1.8616235175842388,10.065218395986445,3.690920613677031,10.059298791444261,5.913756220985442,0.18157778631124213,0.1191790924568358,5.206330517806567,8.965730018357826,3.4853056603296984,0.4910371585047234,1.8318218247743023,2.9997021001935065,3.8478235066982824,3.413143556512077,6.940681602473795,1.6915546726324426,8.07623669525234,9.153431764688841,5.219460415943564,2.9459872867315484,3.26702199529713,5.098085974865156,6.473742287013579,3.274827758328045,4.4494088817584565,7.709285101406071,6.730404014889435,0.39784968557526657,8.895465599020627,4.799010397254575,8.746271546510995,8.118414267980052,0.3104772138071298,3.313155988628518,4.910867514651473,5.7454452589392675,2.849996994596806,9.834738095837873,5.627490614101462,7.405131925817381,8.293789605299269,0.2724927810300758,0.7253292894787621,8.890351581438606,2.5999914269906688,9.427105508163114,1.8168736215208936,5.50298379676085,0.9921250303271888,2.148209500084459,0.9272757734123814,4.118253421464881,6.202979107816313,4.647649093610253,4.0119309766520805,7.476074402666104,3.452040710041069,2.6646146048388752,8.268403829711499,5.433169811569327,5.391029060761111,2.8902010483720653,8.211499621180879,4.033000473285872,2.2464545930869417,5.385451212309652,4.15184726244995,2.99190848817364,5.843990832588769,0.2514826476901887,3.33409766951295,7.2196507262588305,8.53595171107184,1.6738431084341054,8.366161885747854,3.650465857613312,5.800590724998981,3.612501208475949,1.174991019004914,6.624391050490299,6.089183363596472,6.746488404130339,1.0470464814935032,5.438021790374085,3.9499199696400167,5.6723516855337826,6.54757662504187,7.548931434653653,6.882697095124996,9.289556801336497,1.131687690608536,5.966041663141534,9.97303190394105,2.2099071045887198,3.585313148806182,7.4549304318174565,6.457337570791273,7.890148079434102,5.364690979755508,0.6308047506991964,6.633260550643735,4.352768485028612,5.615808196115765,8.073236059615482,7.344799101584043,8.569925735814627,9.492908190475173,8.206592100768692,9.55357537800959,3.6525398303500567,2.4712975731133713,4.017337665588774,2.7541079350495146,6.729073089225476,8.389025120743385,4.788569332966182,2.1077343253117364,3.5180606756557586,5.626789322486158,6.459484755397364,0.880707878543343,4.512569709958913,9.715029791302396,3.6013626490033013,8.461945718480093,5.103862453946277,1.3617808127213782,4.543088555309304,3.908871733253325,1.205700789224915,0.1948077423329874,6.361981420348982,6.0216835616798,8.435485321980023,9.577455245294486,0.6928351395638165,3.9484545015491856,5.742518987205445,7.871800998649207,6.897265971639281,1.819966255769041,2.1340713397180178,3.260658222554491,0.835148741698699,7.454234449976118,6.32549795447981]} diff --git a/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/test/fixtures/julia/runner.jl b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/test/fixtures/julia/runner.jl new file mode 100644 index 000000000000..b69a34206adf --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/test/fixtures/julia/runner.jl @@ -0,0 +1,72 @@ +#!/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: median, LogLogistic +import JSON + +""" + gen( alpha, beta, name ) + +Generate fixture data and write to file. + +# Arguments + +* `alpha`: scale parameter +* `beta`: shape parameter +* `name::AbstractString`: output filename + +# Examples +``` julia +julia> alpha = rand( 1000 ) .* 10.0; +julia> beta = rand( 1000 ) .* 10.0; +julia> gen( alpha, beta, "data.json" ); +``` +""" +function gen( alpha, beta, name ) + z = Array{Float64}( undef, length(alpha) ); + for i in eachindex(alpha) + z[ i ] = median( LogLogistic( alpha[i], beta[i] ) ); + end + + # Store data to be written to file as a collection: + data = Dict([ + ("alpha", alpha), + ("beta", beta), + ("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 fixtures: +alpha = rand( 100 ) .* 10.0; +beta = rand( 100 ) .* 10.0; +gen( alpha, beta, "data.json" ); diff --git a/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/test/test.js b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/test/test.js new file mode 100644 index 000000000000..2fe470e17253 --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/test/test.js @@ -0,0 +1,117 @@ +/** +* @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 abs = require( '@stdlib/math/base/special/abs' ); +var PINF = require( '@stdlib/constants/float64/pinf' ); +var NINF = require( '@stdlib/constants/float64/ninf' ); +var EPS = require( '@stdlib/constants/float64/eps' ); +var median = 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 median, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'if provided `NaN` for any parameter, the function returns `NaN`', function test( t ) { + var y = median( NaN, 1.0 ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + y = median( 1.0, NaN ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'if provided a nonpositive `alpha`, the function returns `NaN`', function test( t ) { + var y; + + y = median( 0.0, 1.0 ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + y = median( -1.0, 1.0 ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + y = median( NINF, 1.0 ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a nonpositive `beta`, the function returns `NaN`', function test( t ) { + var y; + + y = median( 2.0, 0.0 ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + y = median( 2.0, -1.0 ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + y = median( 1.0, NINF ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + y = median( PINF, NINF ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + y = median( NINF, NINF ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + y = median( NaN, NINF ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns the median of a log-logistic distribution', function test( t ) { + var expected; + var delta; + var alpha; + var beta; + var tol; + var y; + var i; + + expected = data.expected; + alpha = data.alpha; + beta = data.beta; + for ( i = 0; i < alpha.length; i++ ) { + y = median( alpha[ i ], beta[ i ] ); + if ( expected[ i ] !== null ) { + if ( y === expected[ i ] ) { + t.strictEqual( y, expected[ i ], 'alpha: '+alpha[ i ]+', beta: '+beta[ i ]+', y: '+y+', expected: '+expected[ i ] ); + } else { + delta = abs( y - expected[ i ] ); + tol = 1.0 * EPS * abs( expected[ i ] ); + t.ok( delta <= tol, 'within tolerance. alpha: '+alpha[ i ]+'. beta: '+beta[ i ]+'. y: '+y+'. E: '+expected[ i ]+'. Δ: '+delta+'. tol: '+tol+'.' ); + } + } + } + t.end(); +}); diff --git a/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/test/test.native.js b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/test/test.native.js new file mode 100644 index 000000000000..ef59f95eb210 --- /dev/null +++ b/lib/node_modules/@stdlib/stats/base/dists/log-logistic/median/test/test.native.js @@ -0,0 +1,116 @@ +/** +* @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 PINF = require( '@stdlib/constants/float64/pinf' ); +var NINF = require( '@stdlib/constants/float64/ninf' ); + + +// VARIABLES // + +var median = tryRequire( resolve( __dirname, './../lib/native.js' ) ); +var opts = { + 'skip': ( median 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 median, '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 = median( NaN, 1.0 ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + y = median( 1.0, NaN ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'if provided a nonpositive `alpha`, the function returns `NaN`', opts, function test( t ) { + var y; + + y = median( 0.0, 1.0 ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + y = median( -1.0, 1.0 ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + y = median( NINF, 1.0 ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a nonpositive `beta`, the function returns `NaN`', opts, function test( t ) { + var y; + + y = median( 2.0, 0.0 ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + y = median( 2.0, -1.0 ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + y = median( 1.0, NINF ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + y = median( PINF, NINF ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + y = median( NINF, NINF ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + y = median( NaN, NINF ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns the median of a log-logistic distribution', opts, function test( t ) { + var expected; + var alpha; + var beta; + var y; + var i; + + expected = data.expected; + alpha = data.alpha; + beta = data.beta; + for ( i = 0; i < alpha.length; i++ ) { + y = median( alpha[ i ], beta[ i ] ); + if ( expected[ i ] !== null ) { + t.strictEqual( y, alpha[ i ], 'alpha: '+alpha[ i ]+', beta: '+beta[ i ]+', y: '+y+', expected: '+expected[ i ] ); + } + } + t.end(); +});