diff --git a/CHANGELOG.md b/CHANGELOG.md index 5d508637c..4d2978326 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -120,6 +120,28 @@ +
+ +#### [@stdlib/math/base/special/xlogyf](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/math/base/special/xlogyf) + +
+ +
+ +##### Features + +- [`16c19b6`](https://github.com/stdlib-js/stdlib/commit/16c19b67c7452b3ae9755cc7ef2a5d2540ab1cf9) - add `math/base/special/xlogyf` [(#2813)](https://github.com/stdlib-js/stdlib/pull/2813) + +
+ + + +
+ +
+ + + @@ -144,6 +166,7 @@ A total of 3 people contributed to this release. Thank you to the following cont
+- [`16c19b6`](https://github.com/stdlib-js/stdlib/commit/16c19b67c7452b3ae9755cc7ef2a5d2540ab1cf9) - **feat:** add `math/base/special/xlogyf` [(#2813)](https://github.com/stdlib-js/stdlib/pull/2813) _(by Gunj Joshi)_ - [`71c43cf`](https://github.com/stdlib-js/stdlib/commit/71c43cf5165749e2ce2647cb52d92f6c97f16959) - **feat:** add `math/base/special/ldexpf` _(by Gunj Joshi, Philipp Burckhardt)_ - [`6c8f019`](https://github.com/stdlib-js/stdlib/commit/6c8f019db8adb12466250957693edb9830496a7b) - **feat:** add `math/base/special/logf` _(by Gunj Joshi, Philipp Burckhardt)_ - [`50b38f9`](https://github.com/stdlib-js/stdlib/commit/50b38f941b50a3f71b531d965c7312d4c6932f84) - **feat:** add `math/base/special/acotdf` [(#2799)](https://github.com/stdlib-js/stdlib/pull/2799) _(by Gunj Joshi)_ diff --git a/base/special/xlogyf/README.md b/base/special/xlogyf/README.md new file mode 100644 index 000000000..b905abe83 --- /dev/null +++ b/base/special/xlogyf/README.md @@ -0,0 +1,200 @@ + + +# xlogyf + +> Compute `x * ln(y)` so that the result is `0` if `x = 0` for single-precision floating-point numbers `x` and `y`. + +
+ +## Usage + +```javascript +var xlogyf = require( '@stdlib/math/base/special/xlogyf' ); +``` + +#### xlogyf( x, y ) + +Computes `x * ln(y)` so that the result is `0` if `x = 0` for single-precision floating-point numbers `x` and `y`. + +```javascript +var out = xlogyf( 3.0, 2.0 ); +// returns ~2.079 + +out = xlogyf( 1.5, 5.9 ); +// returns ~2.662 + +out = xlogyf( 0.9, 1.0 ); +// returns 0.0 + +out = xlogyf( 0.0, -2.0 ); +// returns 0.0 + +out = xlogyf( 1.5, NaN ); +// returns NaN + +out = xlogyf( 0.0, NaN ); +// returns NaN + +out = xlogyf( NaN, 2.3 ); +// returns NaN +``` + +
+ + + +
+ +## Examples + + + +```javascript +var randu = require( '@stdlib/random/base/randu' ); +var xlogyf = require( '@stdlib/math/base/special/xlogyf' ); + +var x; +var y; +var i; + +for ( i = 0; i < 100; i++ ) { + x = randu(); + if ( x < 0.5 ) { + x = 0.0; + } + y = ( randu() * 20.0 ) - 5.0; + console.log( 'xlogyf(%d, %d) = %d', x, y, xlogyf( x, y ) ); +} +``` + +
+ + + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/math/base/special/xlogyf.h" +``` + +#### stdlib_base_xlogyf( x, y ) + +Computes `x * ln(y)` so that the result is `0` if `x = 0` for single-precision floating-point numbers `x` and `y`. + +```c +float v = stdlib_base_xlogyf( 3.0f, 2.0f ); +// returns ~2.079f +``` + +The function accepts the following arguments: + +- **x**: `[in] float` input value. +- **y**: `[in] float` input value. + +```c +float stdlib_base_xlogyf( const float x, const float y ); +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/math/base/special/xlogyf.h" +#include +#include + +int main( void ) { + float out; + float x; + float y; + int i; + + for ( i = 0; i < 100; i++ ) { + x = ( (float)rand() / (float)RAND_MAX ) * 100.0f; + y = ( (float)rand() / (float)RAND_MAX ) * 5.0f; + out = stdlib_base_xlogyf( x, y ); + printf( "xlogyf(%f, %f) = %f\n", x, y, out ); + } +} +``` + +
+ + + +
+ + + + + + + + + + + + + + diff --git a/base/special/xlogyf/benchmark/benchmark.js b/base/special/xlogyf/benchmark/benchmark.js new file mode 100644 index 000000000..7d0662500 --- /dev/null +++ b/base/special/xlogyf/benchmark/benchmark.js @@ -0,0 +1,54 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var randu = require( '@stdlib/random/array/uniform' ); +var isnanf = require( './../../../../base/assert/is-nanf' ); +var pkg = require( './../package.json' ).name; +var xlogyf = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var out; + var x; + var y; + var i; + + x = randu( 100, 1.0, 100.0 ); + y = randu( 100, 1.0, 100.0 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = xlogyf( x[ i % x.length ], y[ i % y.length ] ); + if ( isnanf( out ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( out ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/base/special/xlogyf/benchmark/benchmark.native.js b/base/special/xlogyf/benchmark/benchmark.native.js new file mode 100644 index 000000000..29e2c5408 --- /dev/null +++ b/base/special/xlogyf/benchmark/benchmark.native.js @@ -0,0 +1,63 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF 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 randu = require( '@stdlib/random/array/uniform' ); +var isnanf = require( './../../../../base/assert/is-nanf' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var xlogyf = tryRequire( resolve( __dirname, './../lib/native.js' ) ); +var opts = { + 'skip': ( xlogyf instanceof Error ) +}; + + +// MAIN // + +bench( pkg+'::native', opts, function benchmark( b ) { + var out; + var x; + var y; + var i; + + x = randu( 100, 1.0, 100.0 ); + y = randu( 100, 1.0, 100.0 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = xlogyf( x[ i % x.length ], y[ i % y.length ] ); + if ( isnanf( out ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( out ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/base/special/xlogyf/benchmark/c/native/Makefile b/base/special/xlogyf/benchmark/c/native/Makefile new file mode 100644 index 000000000..f69e9da2b --- /dev/null +++ b/base/special/xlogyf/benchmark/c/native/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2024 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT 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/base/special/xlogyf/benchmark/c/native/benchmark.c b/base/special/xlogyf/benchmark/c/native/benchmark.c new file mode 100644 index 000000000..895f3d47b --- /dev/null +++ b/base/special/xlogyf/benchmark/c/native/benchmark.c @@ -0,0 +1,138 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT 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/math/base/special/xlogyf.h" +#include +#include +#include +#include +#include + +#define NAME "xlogyf" +#define ITERATIONS 1000000 +#define REPEATS 3 + +/** +* Prints the TAP version. +*/ +static void print_version( void ) { + printf( "TAP version 13\n" ); +} + +/** +* Prints the TAP summary. +* +* @param total total number of tests +* @param passing total number of passing tests +*/ +static void print_summary( int total, int passing ) { + printf( "#\n" ); + printf( "1..%d\n", total ); // TAP plan + printf( "# total %d\n", total ); + printf( "# pass %d\n", passing ); + printf( "#\n" ); + printf( "# ok\n" ); +} + +/** +* Prints benchmarks results. +* +* @param elapsed elapsed time in seconds +*/ +static void print_results( double elapsed ) { + double rate = (double)ITERATIONS / elapsed; + printf( " ---\n" ); + printf( " iterations: %d\n", ITERATIONS ); + printf( " elapsed: %0.9f\n", elapsed ); + printf( " rate: %0.9f\n", rate ); + printf( " ...\n" ); +} + +/** +* Returns a clock time. +* +* @return clock time +*/ +static double tic( void ) { + struct timeval now; + gettimeofday( &now, NULL ); + return (double)now.tv_sec + (double)now.tv_usec / 1.0e6; +} + +/** +* Generates a random number on the interval [0,1). +* +* @return random number +*/ +static float rand_float( void ) { + int r = rand(); + return (float)r / ( (float)RAND_MAX + 1.0f ); +} + +/** +* Runs a benchmark. +* +* @return elapsed time in seconds +*/ +static double benchmark( void ) { + double elapsed; + float out; + double t; + float x[ 100 ]; + float y[ 100 ]; + int i; + + for ( i = 0; i < 100; i++ ) { + x[ i ] = ( 100.0f * rand_float() ); + y[ i ] = ( 5.0f * rand_float() ); + } + + t = tic(); + for ( i = 0; i < ITERATIONS; i++ ) { + out = stdlib_base_xlogyf( x[ i % 100 ], y[ i % 100 ] ); + if ( out != out ) { + printf( "should not return NaN\n" ); + break; + } + } + elapsed = tic() - t; + if ( out != out ) { + printf( "should not return NaN\n" ); + } + return elapsed; +} + +/** +* Main execution sequence. +*/ +int main( void ) { + double elapsed; + int i; + + // Use the current time to seed the random number generator: + srand( time( NULL ) ); + + print_version(); + for ( i = 0; i < REPEATS; i++ ) { + printf( "# c::native::%s\n", NAME ); + elapsed = benchmark(); + print_results( elapsed ); + printf( "ok %d benchmark finished\n", i + 1 ); + } + print_summary( REPEATS, REPEATS ); +} diff --git a/base/special/xlogyf/binding.gyp b/base/special/xlogyf/binding.gyp new file mode 100644 index 000000000..ec3992233 --- /dev/null +++ b/base/special/xlogyf/binding.gyp @@ -0,0 +1,170 @@ +# @license Apache-2.0 +# +# Copyright (c) 2024 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT 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/base/special/xlogyf/docs/repl.txt b/base/special/xlogyf/docs/repl.txt new file mode 100644 index 000000000..87bd5cee7 --- /dev/null +++ b/base/special/xlogyf/docs/repl.txt @@ -0,0 +1,38 @@ + +{{alias}}( x, y ) + Computes `x * ln(y)` so that the result is `0` if `x = 0` for + single-precision floating-point numbers `x` and `y`. + + Parameters + ---------- + x: number + Input value. + + y: number + Input value. + + Returns + ------- + out: number + Function value. + + Examples + -------- + > var out = {{alias}}( 3.0, 2.0 ) + ~2.079 + > out = {{alias}}( 1.5, 5.9 ) + ~2.662 + > out = {{alias}}( 0.9, 1.0 ) + 0.0 + > out = {{alias}}( 0.0, -2.0 ) + 0.0 + > out = {{alias}}( 1.5, NaN ) + NaN + > out = {{alias}}( 0.0, NaN ) + NaN + > out = {{alias}}( NaN, 2.3 ) + NaN + + See Also + -------- + diff --git a/base/special/xlogyf/docs/types/index.d.ts b/base/special/xlogyf/docs/types/index.d.ts new file mode 100644 index 000000000..ee0b8b3d9 --- /dev/null +++ b/base/special/xlogyf/docs/types/index.d.ts @@ -0,0 +1,61 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT 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 + +/** +* Computes `x * ln(y)` so that the result is `0` if `x = 0` for single-precision floating-point numbers `x` and `y`. +* +* @param x - input value +* @param y - input value +* @returns function value +* +* @example +* var out = xlogyf( 3.0, 2.0 ); +* // returns ~2.079 +* +* @example +* var out = xlogyf( 1.5, 5.9 ); +* // returns ~2.662 +* +* @example +* var out = xlogyf( 0.9, 1.0 ); +* // returns 0.0 +* +* @example +* var out = xlogyf( 0.0, -2.0 ); +* // returns 0.0 +* +* @example +* var out = xlogyf( 1.5, NaN ); +* // returns NaN +* +* @example +* var out = xlogyf( 0.0, NaN ); +* // returns NaN +* +* @example +* var out = xlogyf( NaN, 2.3 ); +* // returns NaN +*/ +declare function xlogyf( x: number, y: number ): number; + + +// EXPORTS // + +export = xlogyf; diff --git a/base/special/xlogyf/docs/types/test.ts b/base/special/xlogyf/docs/types/test.ts new file mode 100644 index 000000000..dcf6caecc --- /dev/null +++ b/base/special/xlogyf/docs/types/test.ts @@ -0,0 +1,56 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT 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 xlogyf = require( './index' ); + + +// TESTS // + +// The function returns a number... +{ + xlogyf( 8, 2 ); // $ExpectType number +} + +// The compiler throws an error if the function is provided values other than two numbers... +{ + xlogyf( true, 3 ); // $ExpectError + xlogyf( false, 2 ); // $ExpectError + xlogyf( '5', 1 ); // $ExpectError + xlogyf( [], 1 ); // $ExpectError + xlogyf( {}, 2 ); // $ExpectError + xlogyf( ( x: number ): number => x, 2 ); // $ExpectError + + xlogyf( 9, true ); // $ExpectError + xlogyf( 9, false ); // $ExpectError + xlogyf( 5, '5' ); // $ExpectError + xlogyf( 8, [] ); // $ExpectError + xlogyf( 9, {} ); // $ExpectError + xlogyf( 8, ( x: number ): number => x ); // $ExpectError + + xlogyf( [], true ); // $ExpectError + xlogyf( {}, false ); // $ExpectError + xlogyf( false, '5' ); // $ExpectError + xlogyf( {}, [] ); // $ExpectError + xlogyf( '5', ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided insufficient arguments... +{ + xlogyf(); // $ExpectError + xlogyf( 3 ); // $ExpectError +} diff --git a/base/special/xlogyf/examples/c/Makefile b/base/special/xlogyf/examples/c/Makefile new file mode 100644 index 000000000..6aed70daf --- /dev/null +++ b/base/special/xlogyf/examples/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2024 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT 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/base/special/xlogyf/examples/c/example.c b/base/special/xlogyf/examples/c/example.c new file mode 100644 index 000000000..fd472a0ef --- /dev/null +++ b/base/special/xlogyf/examples/c/example.c @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT 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/math/base/special/xlogyf.h" +#include +#include + +int main( void ) { + float out; + float x; + float y; + int i; + + for ( i = 0; i < 100; i++ ) { + x = ( (float)rand() / (float)RAND_MAX ) * 100.0f; + y = ( (float)rand() / (float)RAND_MAX ) * 5.0f; + out = stdlib_base_xlogyf( x, y ); + printf( "xlogyf(%f, %f) = %f\n", x, y, out ); + } +} diff --git a/base/special/xlogyf/examples/index.js b/base/special/xlogyf/examples/index.js new file mode 100644 index 000000000..afe7b2728 --- /dev/null +++ b/base/special/xlogyf/examples/index.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR 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 randu = require( '@stdlib/random/base/randu' ); +var xlogyf = require( './../lib' ); + +var x; +var y; +var i; + +for ( i = 0; i < 100; i++ ) { + x = randu(); + if ( x < 0.5 ) { + x = 0.0; + } + y = ( randu() * 20.0 ) - 5.0; + console.log( 'xlogyf(%d, %d) = %d', x, y, xlogyf( x, y ) ); +} diff --git a/base/special/xlogyf/include.gypi b/base/special/xlogyf/include.gypi new file mode 100644 index 000000000..575cb043c --- /dev/null +++ b/base/special/xlogyf/include.gypi @@ -0,0 +1,53 @@ +# @license Apache-2.0 +# +# Copyright (c) 2024 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT 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", + "mathematics", + "math", + "natural", + "logarithm", + "log", + "ln", + "special" + ] +} diff --git a/base/special/xlogyf/src/Makefile b/base/special/xlogyf/src/Makefile new file mode 100644 index 000000000..bcf18aa46 --- /dev/null +++ b/base/special/xlogyf/src/Makefile @@ -0,0 +1,70 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2024 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT 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/base/special/xlogyf/src/addon.c b/base/special/xlogyf/src/addon.c new file mode 100644 index 000000000..ebaec8231 --- /dev/null +++ b/base/special/xlogyf/src/addon.c @@ -0,0 +1,23 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT 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/math/base/special/xlogyf.h" +#include "stdlib/math/base/napi/binary.h" + +// cppcheck-suppress shadowFunction +STDLIB_MATH_BASE_NAPI_MODULE_FF_F( stdlib_base_xlogyf ) diff --git a/base/special/xlogyf/src/main.c b/base/special/xlogyf/src/main.c new file mode 100644 index 000000000..0875b8290 --- /dev/null +++ b/base/special/xlogyf/src/main.c @@ -0,0 +1,42 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT 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/math/base/special/lnf.h" +#include "stdlib/math/base/assert/is_nanf.h" + +/** +* Computes `x * ln(y)` so that the result is `0` if `x = 0` for single-precision floating-point numbers `x` and `y`. +* +* @param x input value +* @param y input value +* @return output value +* +* @example +* float out = stdlib_base_xlogyf( 3.0f, 2.0f ); +* // returns ~2.079f +* +* @example +* float out = stdlib_base_xlogyf( 0.0f, 2.0f ); +* // returns 0.0f +*/ +float stdlib_base_xlogyf( const float x, const float y ) { + if ( x == 0.0f && !stdlib_base_is_nanf( y ) ) { + return 0.0f; + } + return x * stdlib_base_lnf( y ); +} diff --git a/base/special/xlogyf/test/fixtures/python/large_large.json b/base/special/xlogyf/test/fixtures/python/large_large.json new file mode 100644 index 000000000..689951faf --- /dev/null +++ b/base/special/xlogyf/test/fixtures/python/large_large.json @@ -0,0 +1 @@ +{"y": [55.4696566270953, 84.00313946241987, 26.976430886103053, 73.51202260767333, 75.91926804630086, 66.54990104198134, 64.1174437120166, 14.286159878534743, 47.36536269760241, 78.39973955740034, 28.830130068020697, 76.70793310059439, 8.674062846273511, 17.433180623421574, 29.35829148104203, 64.03352520170303, 82.58567516918556, 94.98282430531997, 27.80015540054813, 45.92938217941524, 25.243373655075963, 50.8762758522214, 25.487827735801815, 4.405682394455757, 48.509602071640956, 9.781644438583047, 62.47950510907059, 38.001305554728646, 77.37650076319554, 0.27856135054611375, 88.17848813279565, 55.608025110367166, 20.501590019163018, 58.02950209240342, 85.01183831973927, 59.102893724267936, 78.02746348692828, 32.954678834032755, 86.09494873169758, 74.72444227222395, 75.83236930574637, 49.68146157788055, 76.94788780745196, 58.479450652294716, 97.9424003757393, 74.43615375437933, 8.460480086562782, 76.39770504392328, 24.17737528785857, 40.171462537917066, 69.33230381179226, 95.0541739977811, 90.58941956531984, 19.46916484989234, 48.178667008553155, 49.9479715816656, 46.30414507650479, 95.49680683571482, 7.889361249775051, 36.260653813719756, 57.06857104904027, 71.11398225839253, 58.44643485808686, 63.42261744715274, 43.19998924575711, 73.66830286588119, 68.75025226835483, 41.340295636572, 88.95170064152013, 13.437011328898208, 21.020767982327413, 79.4112296134396, 13.471094981341025, 98.60765407128704, 66.08169681753266, 87.67762854002382, 98.99857394134601, 72.80946677950405, 96.55439310664391, 41.035976297443774, 11.535921522934212, 51.99435933668488, 94.9699046636723, 63.03590456855671, 18.633661282592385, 11.807766016632659, 22.28557120768486, 91.59679114801264, 48.989746419064694, 44.1962235772558, 13.576108805018194, 17.050606373661225, 66.56361359050219, 11.020876280802117, 40.101623098968375, 16.56715910551867, 16.770400719738422, 21.283649388616688, 40.09281415457912, 50.781855894430905, 65.36687386081354, 18.831521591324364, 5.840460279989735, 30.397517992969348, 51.65096828334698, 9.165737948356433, 34.88948864383119, 51.044481426334045, 90.77800742943435, 52.78987624246674, 19.143492964684718, 65.51899412066483, 62.34852722581531, 16.380510712010476, 43.05060376305395, 63.33376853719932, 29.518778302280914, 85.69041117193605, 56.66875414455732, 61.98705823485419, 19.638714394905133, 34.50949422756639, 64.01858248299102, 22.9967878990863, 97.17632344299638, 43.71053177592377, 23.287374859427356, 84.18638616487658, 15.335096925007308, 82.96302128798926, 32.79452192198752, 51.786162294740414, 41.270055407041404, 1.7966654238625868, 97.81768060535342, 39.03105385243981, 58.895640812697415, 92.53418897251233, 54.32831932380764, 88.53394349989938, 72.38511763138024, 49.88543526076662, 15.561279016532325, 85.89038136300834, 95.29509127760686, 35.601156900956695, 80.9723939241835, 70.46274245386887, 27.742397192575474, 65.82306746096127, 60.89014985445724, 2.6195998469232373, 54.622665391722016, 66.65694164792274, 35.94955584330256, 45.68125106341816, 9.440748122936071, 64.63767916327163, 33.67712316864524, 0.6154136024290047, 95.15842150817497, 57.202263754994675, 64.77942423872653, 99.58204209852806, 79.66568351882735, 42.819132241136636, 8.339129663451295, 46.46795561216584, 52.06633621051368, 59.636869105606664, 57.04052332771457, 66.63535583353317, 18.736144549225074, 53.52577227128753, 37.956649532163134, 90.72860895647766, 37.92543068698595, 82.18845756728143, 7.602633298467842, 98.92347963729442, 98.61963297207785, 18.667927361383562, 51.99391199887348, 13.133163548678983, 68.53335199914325, 40.256334408684694, 33.41907114396292, 57.335007096074634, 78.61729240730206, 44.13035277906623, 54.55502221868005, 7.141601130891484, 60.19020509489009, 50.96932654323396, 16.121217727361614, 75.68888831237682, 84.57883351232132, 40.48040965531138, 43.87197840930519, 5.911795512088547, 98.70162953273265, 17.722712024014122, 57.379230019947094, 69.13341827883734, 34.11273612163528, 51.24873017997622, 13.704696578004949, 41.574408145900236, 26.594651664062063, 46.2866806460567, 6.947480577464448, 35.015816205591086, 97.6159788610321, 97.26992555664057, 75.12423749361568, 26.21658632064715, 60.13949005402692, 70.34325971638378, 55.30438539607714, 21.67461971034168, 25.94166288750538, 36.453945984917056, 87.68640523572469, 3.358937439584464, 2.5926394845670164, 8.933406477676375, 36.49945695551511, 56.300291052137794, 98.47056082031342, 72.46565214059405, 13.388327108898624, 94.97697559221724, 46.76812761304541, 20.42991904144924, 51.93223658808444, 12.97704507044063, 74.59376227516613, 50.698731816044514, 54.7442504431373, 4.199362728407962, 37.03027180946607, 22.247586068112668, 12.868135552818138, 23.483802707205058, 44.757781387052184, 12.616006967048632, 55.4524406585478, 73.36024596660715, 49.863476271464144, 95.83670977950767, 43.78719757806656, 89.34129687080846, 42.16653567553684, 57.34426544364165, 94.91462499623535, 55.74663568773243, 79.43807195293085, 65.77193091411655, 68.75541154297268, 46.313496016906754, 86.03652547435148, 47.9267078128799, 70.56795824253756, 99.58054165136281, 31.683380616957745, 45.293851040932275, 67.99827226040995, 46.7388527353245, 20.767934799959733, 27.97125257790738, 88.37783027189316, 77.37171721007435, 70.68588719976474, 90.72144067523273, 23.258359577099384, 22.2553834641124, 8.988254417149676, 50.63565120032904, 99.93078012669116, 77.78125959963795, 75.88975516731558, 41.97544281473109, 28.884743464508734, 46.13370868206268, 99.63413477144361, 56.19106373915649, 45.740974726771555, 15.404548712716593, 42.75527003426648, 74.22598759014872, 13.339440759862764, 15.991478294562466, 89.76944233291985, 53.6884574470171, 48.324768922055874, 72.54081834715684, 53.370081808302885, 49.70975125527494, 6.714494666689397, 71.7768986451372, 44.59981905996817, 82.65619456680672, 75.61530499282311, 69.90969031012926, 20.530970063752363, 17.15059907143711, 10.069131939298936, 33.80198625424865, 7.833546360471033, 56.3366098018506, 43.029175692413666, 54.79959990719977, 75.25496687245277, 12.421953418322062, 94.35406414488877, 77.01766328552075, 39.99743513508404, 67.14087701140348, 98.14400824740255, 36.64428736938608, 47.19497707063083, 74.5069184514098, 58.622821008261916, 96.29105018194488, 60.45110197919943, 72.74435090621587, 42.5119863524571, 5.7021594376642115, 12.10378928778959, 4.896977933412428, 23.850482520949257, 16.84829618626168, 10.463640904259087, 46.07849521773081, 14.937874595137291, 55.99601937446901, 24.506601987275477, 12.254969303142026, 21.4147130873097, 46.35780637009188, 60.29076349918101, 65.2747613129397, 42.78925764601927, 55.47903732254276, 45.76168710787708, 90.7513473104496, 23.46473882109269, 25.850520856718127, 87.99075634811116, 19.20943807104375, 59.144783567984696, 14.711533476530846, 75.61461068240997, 63.60262421529057, 1.010881303404132, 95.52872980105191, 93.8134439628372, 98.04721066026134, 63.82945928172027, 26.110990353386875, 51.09121419300059, 84.99105963024269, 59.05015618541148, 68.74477657725325, 77.13701683155341, 89.68494063588139, 72.19087293917698, 56.03455945223874, 5.2970812904553854, 83.07925401615252, 52.157617653515906, 75.6445512647115, 46.6175261571861, 86.5221410793096, 50.59858532026744, 65.48464540466709, 38.42607059243787, 39.547247087650184, 88.26162022681613, 83.96440692026688, 71.94302647464035, 66.40892377757254, 96.73373497673958, 12.523427616674832, 8.595364055558552, 29.813012246400493, 94.3029415088812, 55.52536981760752, 31.436548575664602, 33.63740286690048, 3.442896822309738, 33.95187790087082, 21.937829905699935, 1.3271823269594196, 37.75239092993583, 18.892542264915146, 33.748232811141435, 37.46020747872457, 44.43786556916432, 82.16308346357928, 80.25244868785092, 91.33022823422034, 80.19936848849025, 98.86433822601657, 67.72997195370313, 48.141344842292874, 64.65062741902783, 40.62909154615253, 72.15876289801218, 10.09211951560789, 16.742171675597504, 22.511886601340237, 33.51717119657788, 30.3069246917929, 40.04527532443948, 8.59791140613173, 78.48324660718924, 56.870964964147554, 25.252055427181787, 92.88442594310912, 95.52615823580041, 3.1709024782301864, 69.07556311040732, 94.80592439939379, 8.675027279460569, 28.83778964695135, 90.738776269115, 81.42134395144662, 97.86603377489254, 57.138966503785284, 97.56832506829053, 68.47351153363849, 62.83108655617025, 99.46118175918768, 0.22766611305918838, 51.55827764343536, 47.778445233644106, 38.11275436322313, 80.07038013868954, 61.69460723782555, 67.08111001593467, 43.878725703245244, 31.68304792105483, 53.465830153380644, 94.28402157347413, 88.46079237798898, 90.504346466896, 29.598870915390652, 82.75010990621021, 19.053887579884822, 75.25422715236316, 92.38562090267837, 22.54850451033221, 68.46401655427739, 72.366346846478, 63.240642092459744, 39.95508861102448, 47.19329447901133, 44.663502286375866, 30.22913434481771, 7.549089529748187, 64.6220068980627, 14.983641106736023, 75.64157245278847, 25.31236532756744, 96.8230388994755, 25.885108750955908, 79.904975106547, 26.18040449096958, 88.16440744740083, 76.65304022764163, 53.79797001063908, 4.421092137959992, 97.25211153344002, 57.059942750663204, 87.39565257764662, 97.47565176327451, 85.66593153281939, 58.42484709520973, 8.402440655699262, 98.63560797704226, 35.23915272459411, 17.344808299761215, 61.8290244135696, 33.074320484606886, 10.400967285497098, 42.125522546929126, 1.6545003475527897, 93.27103839788185, 3.684732518048328, 60.43180514046333, 3.5633544675507833, 48.60349973372929, 58.82999694580977, 53.94925117045797, 79.72080915057226, 78.9559934539372, 19.867323392250558, 67.72523836380861, 72.6376563894885], "x": [80.20004723756783, 69.27358550877413, 26.71298294059026, 35.26832427659301, 38.350513485100166, 76.61868508873007, 55.22115669538938, 6.923923982304192, 30.55568401178008, 11.996980253344292, 29.940889439273032, 76.59671769205671, 54.561338581361255, 48.82278209885349, 98.02542407903748, 16.473429688586783, 6.801118807261464, 83.67079731083005, 24.359490264373218, 22.580970490336117, 8.579932900522437, 93.1415502196233, 36.31280242547651, 7.155928135857725, 68.19925684465208, 51.07121214523498, 5.118566972900318, 95.65168182413547, 3.920781096910886, 53.502432837143175, 36.490023177408084, 17.06096868686755, 74.43365599159114, 68.55482824094408, 15.558504703069453, 65.0718157454265, 55.48917521099711, 78.5614557401343, 1.0539865366781531, 79.93428661767695, 34.64640184673089, 27.87357107543873, 0.44856545532572234, 32.70592484938902, 24.864485369716192, 77.35346136038407, 82.41720495589013, 67.43288216107511, 73.2847158254902, 85.5157684015987, 39.905921914837684, 7.578071667737262, 67.3175045523025, 26.925080898181474, 93.67732159621048, 15.247145672370932, 33.05172396047812, 7.763273096025902, 20.27387903518768, 49.5006376852793, 25.613435050374058, 16.043671132858783, 9.492346984831945, 96.52946221347452, 59.68625905138729, 3.1922569743733753, 99.16525539787393, 71.30636880589238, 20.41841493421721, 13.387436004419929, 98.81616025818929, 8.048685579635483, 10.954427192452387, 94.7026625801042, 47.85126621010954, 68.10966014869116, 25.826029981032327, 16.789083012917473, 11.64335695540074, 94.20632313713118, 68.63293336515834, 20.104412401212556, 61.88613369406705, 47.75039994643593, 73.49986338542026, 52.8885148134709, 92.60622056382343, 47.87348679355584, 62.878272925450254, 84.22546092158404, 74.46657188676335, 8.0615959636547, 64.57329491549336, 59.058538026837205, 49.020200265388056, 23.139577035023294, 83.20826323821461, 15.270320442684671, 48.295866500984495, 89.18641604836236, 77.35368847917874, 87.93289687944804, 59.69528351267736, 85.40553481968448, 63.6897174824127, 87.12752502549351, 70.74685541127891, 80.4658750514186, 18.328423567697318, 95.84440723399068, 76.31561613739926, 61.80569524713282, 30.056542365046923, 28.645427214498376, 72.65840351469176, 9.10013179367638, 61.48973102164905, 11.858967722438118, 19.7302798394542, 95.18415266974237, 6.026523594102429, 43.94183046286793, 6.598377991475468, 90.30081627046799, 59.25328424574315, 57.485487640805985, 62.37869073502355, 82.66292822949957, 54.80688668586193, 43.014179877013234, 6.743892047817401, 14.228949261163814, 91.79666879409142, 93.20483980505276, 53.68423871488305, 35.673971878469466, 76.42001149809768, 63.8429402213073, 94.93593373219271, 30.99993452995573, 67.16015138428713, 62.33351063517956, 26.249822910494323, 45.386679371867935, 36.436363608614606, 45.1835241971663, 81.69459660092652, 76.80387758317468, 20.63462952443872, 56.187755620275105, 79.71028746451655, 31.260779948979756, 38.0002747765213, 47.2235367065473, 13.722344584785695, 87.81440810403807, 89.88512625194686, 62.59551460276985, 56.07762560631016, 77.12284445179604, 64.34043081768687, 42.79870792204436, 19.791157685768933, 74.37158118274789, 66.6797182176131, 78.72395879622577, 85.74713605882648, 89.06676741777197, 60.883807104240304, 25.40967974252051, 58.32330880343888, 52.43281637908669, 91.7503863263828, 39.43785983289151, 85.39983483844016, 0.7551706402130209, 75.05293674077656, 16.226526161092647, 57.64968595265927, 79.02385313044768, 6.786507452372115, 13.857955852751335, 97.60633416900156, 78.87807750398123, 96.55626571922343, 39.62357252615374, 33.1158003908793, 85.31362879973835, 16.82327913937993, 62.440487662025646, 61.504282842190705, 9.786848327420861, 63.545349705345956, 35.72847688232429, 47.014884142494836, 42.18187299094785, 50.90780412431363, 53.18040554775123, 75.93249387414167, 50.19097729235562, 45.5566528216265, 58.86021530975537, 61.872661694219936, 86.82517800985924, 67.54054487113802, 66.59657331321701, 20.998345176047284, 74.30196442941134, 52.11025387425147, 75.33378902096219, 73.47525547513258, 13.594806128796478, 91.9450514431309, 79.12479940958967, 79.34112859978494, 50.997566889054994, 33.62135670037637, 68.68105721554822, 88.57349164238504, 40.744100402907314, 48.96639021671043, 11.206348440243175, 90.76638158577218, 95.50595944101174, 75.68974310943506, 2.4688806104681493, 55.911843768819914, 3.8173770856332445, 12.891180002950954, 81.14626832919335, 63.93241683566738, 42.146177381266895, 86.60801507897422, 86.97440121748993, 8.99350647221363, 19.130606493173197, 28.649304647839678, 21.111904457726805, 45.464830290382196, 34.62728601506932, 61.903861479477044, 29.691817479515347, 95.75913490856101, 46.55625824761353, 64.36350774239449, 46.16243218626971, 45.398306761447614, 13.268059105422857, 42.85970946632558, 26.259128618920148, 93.8744864557639, 30.834261857809476, 25.152414741778053, 53.34953215625907, 25.301740135335194, 35.09863156255461, 65.90989365998473, 34.70944174998388, 7.472754941035231, 95.75280069243625, 44.96193611336028, 49.846516848559006, 47.71201460042408, 95.63649696487381, 51.8770420626599, 76.38232990326146, 31.884540029043308, 45.90580476814203, 80.91580730620768, 62.62852348641962, 42.22404537176767, 70.51897225271637, 93.38183181540487, 63.56363238705348, 90.55196518679244, 50.320723538043985, 95.82061003122256, 93.65257222003197, 93.39522663735974, 84.18481348650695, 70.43368098147607, 88.40093369557246, 46.67714585883637, 3.9512123691128553, 66.06790111497988, 38.7400793080509, 95.7605628442877, 48.01833741787217, 95.52316138923209, 33.46659266032248, 12.371239933363876, 53.78684640878028, 49.07786460547956, 2.311301994907633, 2.762522673957002, 30.512280968892203, 16.189299689513724, 70.79205947349514, 12.6936605936535, 48.09667219327151, 8.484058538282802, 64.64831007833364, 59.79347103034732, 27.1065490369812, 36.50834644948667, 97.17318604016329, 2.715049003031633, 0.7134078720761883, 30.052166598424435, 8.831534369638339, 70.14183416378923, 58.3406775678302, 29.039257305177646, 97.0575368004819, 91.95606263249365, 43.441608055941536, 69.2428076913385, 47.84584772722654, 58.018881510350774, 8.494755513937557, 4.545837997472435, 81.71850874865876, 90.17008788717632, 32.253950874638605, 98.08264931804761, 92.11600841014538, 24.262291687795422, 33.86816746607795, 71.40458079074669, 46.051867443854874, 38.79778208663185, 64.22250795961956, 83.71301804513143, 90.88293996404325, 85.07212635865362, 22.26147116890973, 85.00978751148158, 49.55119679762301, 40.6441291793746, 59.01869396989055, 25.3290308043534, 28.504452332684625, 76.15686631891016, 98.53247612896935, 0.6425846563730797, 29.532991737692505, 2.79920049004162, 49.873187452851354, 21.23414541182297, 82.89453823961675, 31.400512007532843, 34.70168373443501, 70.01448105120174, 4.155765354216834, 54.50664256454277, 36.721521663428646, 29.617763811402952, 69.81044305706641, 23.140601313469446, 17.876525258651633, 96.33644569346326, 23.97877186598747, 24.079921263777493, 67.50476979644657, 25.561735239467875, 96.79750569712782, 65.05347333162786, 49.315288483149324, 70.87898995585614, 79.75624184995168, 47.082893545688734, 81.0486431609086, 58.78484872350717, 81.65780081762381, 78.9617626189187, 82.97061037040375, 21.621320061718443, 31.238371351544426, 50.22507588078713, 19.28085243221571, 40.57217668505011, 89.0062766649034, 66.60258512844855, 57.51871262752517, 71.36129017905324, 76.73128996316701, 67.56914308085362, 99.51664739001617, 81.25827937796589, 43.25827590825255, 7.434211779257948, 72.55094383845963, 11.927733836895394, 88.68052219382875, 58.30041929566365, 76.46806820547842, 20.858544591086293, 31.083808141913206, 12.63546446816135, 2.0527986206943294, 22.17298563702652, 78.4001601627348, 70.66551252115632, 57.35394158032111, 20.150890554199275, 45.74269894221784, 67.10741125240423, 68.67120758790371, 99.6529314272956, 1.6867330375113232, 88.04988656539743, 13.178891941671644, 20.476014918259654, 4.850229477209911, 47.371960876657816, 10.924238533419716, 88.75715313174071, 81.08383642247527, 2.57247621069967, 35.364235662636034, 38.51334757233864, 39.60852892724527, 60.06452414986727, 48.77254398630879, 99.9722434547129, 63.149807227908106, 0.46802995684400717, 32.2836126528291, 78.79481182679481, 77.6011823439104, 41.144656996216625, 24.995006143047448, 71.67162537886496, 82.45027010439351, 50.22259518311033, 72.65846265642082, 90.93316492738867, 9.812256067395586, 68.14944653617616, 9.669829877618996, 29.63319270231922, 52.6064390091843, 5.666422576089348, 9.011221972878081, 14.532735603069769, 32.34296857085989, 66.93655082185559, 7.813722362365205, 46.68700596548532, 89.23958526849319, 34.86700148131598, 30.89785535920798, 43.542040118755885, 54.146475769475124, 2.7837000373641785, 67.85662053352394, 67.26052469704229, 9.324560610134757, 74.93004149106281, 50.9559969639507, 20.61204243346667, 95.31046804323114, 62.939999486361174, 8.892517027283631, 88.16242967236549, 28.29455963763493, 24.791197315055634, 93.3638268886264, 93.6877014773418, 2.542075855077397, 31.478616100661238, 35.76189918816919, 96.89210858282344, 99.20916910903938, 23.974502562613488, 94.50697009108839, 36.90557618780945, 48.04406927223178, 87.46219966145154, 97.99059368260197, 29.9221201410488, 45.929856086147936, 73.61183258979601, 33.88001363174361, 72.247237498975, 6.522024939794225, 72.16494213843313, 18.52199694862585, 42.70922257339682, 78.83515658744348, 96.29984290381562, 42.043010109341864, 33.972444334261986, 45.00365319055955, 36.136951678114656, 64.57471621467747, 27.06403628511549, 66.2335774523525, 82.46628450010265, 25.831317127222984], "expected": [322.07024843131046, 306.94115540927027, 88.0183052248209, 151.56382368567657, 166.0450874000982, 321.64156673933894, 229.75957558606805, 18.412730309091, 117.88050497238106, 52.32867567136103, 100.64393521421934, 332.43014797593577, 117.87089437051505, 139.55383553758764, 331.28427356123507, 68.51969509512344, 30.019024673458247, 381.01138159667846, 80.9963187427467, 86.41974612736385, 27.700859840524927, 365.99010208002534, 117.58815292746212, 10.611491205135113, 264.7332672258651, 116.46828809809102, 21.164448217973252, 347.9445201780363, 17.050234599961314, -68.38236652475618, 163.4520609505165, 68.5565601178399, 224.82703991638712, 278.3978351817018, 69.1231772179467, 265.4461491417787, 241.76971350461577, 274.5827560366356, 4.695985097167055, 344.82110468766155, 149.96782477141457, 108.86390716162093, 1.948177373223746, 133.06979257628203, 113.98823836480449, 333.388913503523, 175.99418735854263, 292.38578457745064, 233.44240091297488, 315.8231464043305, 169.15764905758118, 34.51392563405441, 303.3553900805625, 79.93603973386881, 362.99178319442535, 59.63131067955804, 126.7610123196663, 35.393482559223216, 41.876004796089276, 177.7435849610388, 103.58722551924252, 68.41476969134071, 38.61591825479725, 400.57994499844784, 224.76891648735258, 13.725340694039645, 419.5166699065604, 265.390732069216, 91.63975602040797, 34.78073195958552, 300.9456932190264, 35.21010018705074, 28.4874948573961, 434.79402381474074, 200.53947952000152, 304.69992373684045, 118.67333099885298, 71.98900218756796, 53.21138140481974, 349.92459714828874, 167.83948976920271, 79.4352522858201, 281.80222593906274, 197.86354607664788, 214.98487273006825, 130.56891507082088, 287.44410021269925, 216.26350923360738, 244.69777980127014, 319.099895182911, 194.23201897610159, 22.864183735732926, 271.08890017376973, 141.72816680334807, 180.95399127828261, 64.96256616973098, 234.61530630695603, 46.695710616940126, 178.26956334186576, 350.2831383015359, 323.3396256628706, 258.1298454951331, 105.3508099432805, 291.6053238657254, 251.2246601486476, 193.02862663858605, 251.30596095604946, 316.4479406146514, 82.63217726352968, 380.14953509993563, 225.28086485086993, 258.49243684800655, 124.21587641968031, 80.0952572311482, 273.36825214395185, 37.75115649683541, 208.14437596227373, 52.781193042077916, 79.65553927915428, 392.8179187570222, 17.943991130482953, 155.60832520127536, 27.443798175885668, 283.1250751275419, 271.17426086679643, 217.156550071613, 196.36258932333806, 366.44750720749136, 149.63069931433245, 190.05363651782213, 23.537946686092848, 56.163412558922815, 341.49620116061817, 54.61173590032975, 246.04052134206853, 130.7221893299051, 311.4701669603149, 289.05390352352106, 379.27338675921857, 138.98467311893242, 287.57981662877717, 243.70713928926318, 72.05013892967783, 202.11014418057871, 166.03971834013612, 161.4126338837704, 358.9749034232572, 326.8069578842705, 68.56808623662748, 235.25646660228318, 327.5352639956814, 30.104805571160927, 152.0181579492045, 198.31803765274364, 49.15504010162793, 335.59926550937394, 201.79527484847188, 260.94802538407174, 197.21484625984368, -37.44011105183228, 293.1056055036873, 173.1889721618024, 82.5486817231842, 342.18229503772665, 291.91306574902427, 295.76473373036185, 181.8661474312347, 341.90620669855764, 240.64438013571962, 103.88173283553213, 235.84557698489257, 220.17773368262905, 268.8703344942181, 156.9691208627124, 310.551777353993, 3.4042131365564483, 272.86409908199096, 71.54299518645931, 116.942080908139, 363.06297239579936, 31.15869050823503, 40.5595613225206, 385.6549866586375, 203.12213981362044, 408.174283146224, 146.41969456325955, 116.2075403158769, 345.42732262345953, 73.42674416911306, 236.47135656267707, 245.9685291086089, 19.240327232784505, 260.377682550756, 140.4566462126079, 130.70778489885544, 182.50541466795838, 225.91274989521236, 196.81100980274095, 287.12170237422055, 89.18683674366603, 209.20077176451832, 169.2141123563893, 250.5646285783779, 367.7947738839412, 238.3958895787019, 262.1701201865109, 54.96817849345623, 276.95944221537303, 170.95863777830874, 288.89410059445885, 142.4228986261229, 48.340409607222846, 421.2040686000811, 362.19296630364533, 342.68569948125304, 166.57805858829454, 137.7354923430698, 292.12711372678626, 355.43233144561395, 125.33463758202261, 159.4272353946365, 40.29858605946831, 406.06763111562617, 115.7173780942378, 72.10783673466887, 5.40634929621929, 201.1315292429345, 15.386700692161712, 59.16739176001114, 347.5586113040478, 165.86518919950305, 191.91828736809578, 333.02530734186274, 262.4018072718223, 35.52380849257711, 49.03522684083947, 123.53743144597352, 82.88324464361993, 181.98081903005559, 49.68782787014034, 223.58038864912933, 92.11095119949883, 244.64104667822906, 146.9460270931408, 244.66276955534, 117.02021462216688, 182.29806882234823, 56.99138465541312, 167.55098202989979, 119.81110299485684, 354.7837407560504, 138.52180618095696, 94.11095192441333, 216.0161420173312, 115.19826122083327, 141.12517664346456, 288.3543181987957, 145.30042783095806, 31.613904118407756, 367.25349080626927, 200.29517050735507, 192.88971657525175, 203.08982543114266, 440.0203455443375, 179.27628108791507, 291.25890704291794, 134.53625219792704, 176.48834531706828, 245.45083531042533, 208.62671508896014, 189.23217475181818, 306.6603050104826, 397.6428059827087, 286.5317429145969, 284.93666504446276, 156.12426833547713, 210.41426560279726, 367.554119867925, 430.03624278143275, 366.53230346640373, 304.92724594364824, 330.3617814112316, 156.9898770454274, 15.139243613551827, 304.01176572283947, 156.07439420775003, 366.09210492972744, 131.3139628197433, 358.73651268125315, 144.14444068695892, 32.05048203072036, 149.10014889742183, 220.71516312605206, 9.206373560455525, 10.71290890055546, 130.7191706666716, 64.38889742244382, 276.528021731824, 24.17213894153867, 205.54414324008727, 32.22016195331252, 285.40223320524296, 258.6461487450709, 115.12705083319746, 110.32583097816253, 276.1694115746002, 6.270336439738257, 2.5115663719550563, 61.85984033773704, 35.60295827353178, 263.86505018190934, 233.57757274223925, 125.47520146524461, 244.5331003618671, 418.12921424188943, 188.71185667927028, 255.42393053418294, 201.27757987658532, 266.0998794103903, 30.591802398685637, 17.52096642946023, 352.27966448826913, 367.0936140889998, 147.3159010564801, 402.31882488578026, 394.896837607338, 90.97840334839013, 58.95922836032566, 178.04864803178134, 73.15883783078141, 123.05897781881454, 181.3803882506998, 196.5503372667056, 348.1131382763905, 230.02651453890897, 89.60866814855615, 271.9414264470408, 124.17190551908546, 124.53679071436827, 226.4187096567649, 103.82822904096601, 119.10886009295452, 286.0670531216717, 395.70694078931626, 2.4568885148165927, 133.13836874525146, 8.832873839381469, 162.20410115080452, 95.07019039272605, 244.9866612612515, 128.11372463944818, 93.30004958280662, 302.8581068778095, 17.257458658040417, 0.5898996656937495, 167.42909874351875, 134.5033928204088, 320.1122335729651, 96.17731030804629, 58.31959501478556, 378.95025168916044, 106.5267987199723, 98.20724236081735, 285.5722292211411, 111.08064926180877, 435.2309025860475, 278.3842147375748, 198.54180458331533, 118.16633117827288, 352.5062405315615, 186.17848489050365, 350.620110899796, 225.8500113619688, 364.2264831363892, 309.8399252438952, 346.9678005758857, 78.89049213955934, 114.87898837570215, 225.02367673051606, 85.42175330085222, 173.4815359734149, 373.4553341386135, 304.5045018854128, 145.38436127934898, 153.51404835789182, 260.4985054265338, 307.20394567499847, 399.7424529013906, 280.1762057084803, 152.0804657812806, 9.19101427715796, 255.73802623548045, 36.8353772035089, 25.101744000849944, 211.69166808163584, 224.7218548981868, 73.39971774379278, 112.62531660628444, 47.9401138225263, 9.050185790659892, 97.23247272970835, 353.9360977167434, 309.8340449023652, 263.46958823324695, 84.94665945948488, 177.21368225749313, 279.77065054793013, 254.39141384349477, 426.4018123097737, 3.8993133194523906, 248.11848608921483, 41.03964230193564, 71.91294955577986, 16.545957519922233, 174.80304237880588, 23.503710195528093, 387.23726828325306, 327.6423442070368, 8.3062878729822, 160.24794104957388, 175.59776147394322, 45.70888565701824, 254.38533412165816, 222.0044216084804, 215.98488045762835, 212.28986501685185, 2.109871925790888, 142.03619122747068, 361.1638633361521, 313.9345207772558, 188.46527802681445, 105.64006816696663, 296.75277842258515, 379.25206743061625, -74.32317006473313, 286.47144875400915, 351.5998659204562, 35.72199887949803, 298.6926180964215, 39.86093911053548, 124.63431880921752, 198.92754533027974, 19.58191985060211, 35.85603756013032, 66.07034638184943, 144.97927875736954, 301.57579395384835, 26.470830227598572, 206.16166410447798, 263.0132553842606, 150.65585310352967, 139.84280808900957, 135.66257348793948, 228.83970003986556, 11.919083608216875, 281.3978201855995, 248.04040611055697, 35.939204668524845, 284.6709664974137, 173.69911698926737, 41.66573835611801, 397.3069297182581, 170.37599889340922, 38.46908230160318, 284.8786440197782, 129.3877665315031, 80.66232170807784, 409.01181162926423, 305.8913956322839, 11.386474655224168, 136.59482102643878, 142.51959857154114, 144.019146920062, 454.11079393733536, 96.95534197293779, 422.4882629189746, 169.01287345073365, 213.8179786357631, 355.7735985426679, 208.57515579828365, 137.38538986013126, 163.60939317083023, 210.03614344168184, 139.73381024099146, 252.77553985871776, 15.273922445576204, 269.94406455127347, 9.325808024147928, 193.70809095151756, 102.81664853057323, 394.97530231612177, 53.424152477545285, 131.9386305199504, 183.37421994300817, 144.11574650790325, 282.7423738510529, 118.23981514152493, 197.97721937664494, 347.6332335684032, 110.69968256768445]} diff --git a/base/special/xlogyf/test/fixtures/python/large_small.json b/base/special/xlogyf/test/fixtures/python/large_small.json new file mode 100644 index 000000000..c9c551c91 --- /dev/null +++ b/base/special/xlogyf/test/fixtures/python/large_small.json @@ -0,0 +1 @@ +{"y": [0.031082528754781125, 4.528437250138352, 1.3321868171045714, 1.0215123839750655, 1.119857268969981, 3.964576732465167, 3.729834886532704, 4.463345104583706, 1.4113277373919235, 0.17450382692697386, 1.241940383575001, 0.8649107322428412, 2.7337717286103342, 1.4943920416074823, 3.238291068146763, 4.545353110801205, 1.4280152953654468, 0.6053530401585916, 1.5489182410180828, 3.304734133260896, 3.7696963958702625, 4.117349348012375, 4.67306790757948, 4.9041365299438295, 1.1904666275801064, 4.740976616711798, 3.969499443533979, 4.460578624147123, 2.3125495765039785, 4.896102546576979, 0.34378828577937337, 3.3994096130430624, 1.3792343023726077, 2.801123089755118, 2.0380948219108785, 3.6183246979220702, 0.14076063528014437, 3.1198833896912554, 2.3220188716511525, 4.826911139904019, 3.618998065690971, 4.198236970787263, 0.08882295961083864, 2.7433884687899726, 0.832395536994836, 3.118379161777152, 0.08891561440306506, 1.5228072644765556, 0.07019920581223471, 2.378732333380462, 3.1112945393279174, 4.192782924175377, 2.249178015953462, 4.645166798458302, 3.129495162969489, 4.2505214943618945, 3.633369356575372, 3.3371061568516582, 3.903198115229194, 2.395364021345378, 0.43358227015667383, 1.7702301604460036, 3.988833364597321, 3.815944400290726, 3.0506754456422707, 4.9828812734870125, 4.682917881391509, 4.225062792974706, 1.5075935768055655, 0.691374461499828, 3.70321229578411, 1.7110138024036186, 2.193219118615819, 1.817527366521166, 1.9717473679343382, 3.3924097203224814, 1.5524235440699385, 1.431460707688852, 4.653907473356994, 4.385735635707034, 2.0279301591342587, 4.503131241522601, 4.039939074748814, 1.7024108832442724, 3.30591805840525, 3.8420808810810207, 0.8244185016595829, 0.5752329571209208, 3.145426995214084, 4.318194901969818, 1.3871414395180355, 1.274348205238507, 1.892886369505724, 1.6726786943866923, 2.954561264771591, 0.40254834203683143, 1.2679558821535957, 0.2498657398770432, 2.2858708854824252, 4.910703925734571, 4.85771153853413, 2.155334250704937, 3.598013900852286, 1.447962859829156, 3.058248247346273, 4.971498727770392, 1.7001077114078689, 3.649028883945647, 3.4586541479515187, 3.0642383010873493, 1.0128431770187625, 4.3796574589379516, 4.614568321465293, 1.442207115577775, 4.387424527749098, 0.6665978974030956, 2.50621814655425, 1.5855004242028337, 1.2064573876548828, 3.455735843080405, 2.9084552327354425, 3.748149454464214, 0.16407219005534046, 0.4607563028105788, 2.849873207003707, 4.219316566715798, 2.046127911777635, 1.3219652592308289, 4.382758226862567, 2.073158469310297, 4.064517223321111, 2.42235609075044, 4.487523126086506, 0.5668376758086424, 2.11614050316072, 1.053487703884245, 1.1688592770712714, 0.19657260427095702, 1.0570833409365576, 3.921904139205186, 3.892945852624485, 1.8482035299588722, 1.1880902246251175, 4.305967472528665, 1.3883446908914872, 4.0885548743835045, 4.910338836822691, 3.4686506993469175, 2.036750780113006, 2.3656142124050152, 4.26443914913147, 4.068973778231487, 3.184047702236067, 4.478276407560631, 3.174498882707046, 1.7429651544621905, 2.6206710749958306, 0.5001932768230855, 2.795771249639069, 4.506797694515715, 4.453810421544626, 0.1416871618584875, 4.127077594438723, 0.3887805595873012, 3.851561400682722, 4.2875995496729455, 1.9849405723317033, 2.5865561181761927, 0.7458608706191572, 0.06133824199832161, 3.8749380487414786, 4.588733770332986, 4.198961160196184, 2.910949099132782, 4.441651761168727, 0.425325823842404, 0.22741215950159654, 4.347966639736875, 4.3793095079521125, 1.5955210452297375, 2.1490699853583473, 3.822387158006302, 0.6030373533534888, 3.662250467531194, 4.446382028259132, 0.5136416914837227, 2.534729081162413, 1.210324691305421, 2.5623877494064704, 0.041664977936852754, 0.21785201617518457, 0.058959377724450146, 4.760709933074167, 4.625798747577148, 4.772444278247811, 1.5046083732832938, 1.9704994593523106, 1.4045932839832758, 3.384709414097374, 3.5108575308162098, 2.4794848174528292, 4.376234865094022, 4.566949665280434, 3.5736874437628474, 1.9150433373625257, 3.158221507395749, 2.5426811860979273, 1.7513201954072388, 3.986031064313459, 3.3967707776871787, 4.204475571888402, 4.819220229494469, 2.2047888446955612, 0.09308468903067468, 3.513664130705765, 1.88951728281462, 2.476060488882967, 2.176645171533787, 0.9954780094499122, 1.9409534273269091, 3.464215347693152, 0.43166858089227933, 1.6595518519712664, 1.7973130410999665, 4.0021242062269975, 4.013885401299594, 1.1532363146910192, 4.153905427659674, 2.004883394453254, 1.1879074771797855, 3.353289447317654, 1.339605865823656, 0.09644030283023242, 0.2642976392654811, 0.8662163522657301, 1.422412386739131, 3.232770008706243, 1.9577442421579438, 4.0604548834293, 4.413482565272183, 1.1343831279273826, 1.5358340068176457, 0.3710939348165948, 4.173386585321019, 0.8377642520024753, 1.059094306615035, 0.5643109581775163, 3.9324725043812725, 4.577057157582223, 4.56921727385942, 2.875626997393116, 3.0114305107478767, 0.9964678530388177, 1.1148524472616357, 3.2007352340785014, 2.3004821785044287, 3.301135656903766, 1.3217999115927053, 3.686753960341363, 4.560001830282953, 1.8403377443766378, 1.1472402833164757, 3.6725137473424696, 2.778307897677335, 0.10194208096903634, 4.183823147334179, 2.8921164288581096, 4.65661756846142, 0.318239420854583, 2.8994007770663925, 4.912048064126402, 4.561324143534825, 2.985869630705264, 0.05736801664228852, 0.47698154506557733, 0.04812404150245808, 3.6049329063796876, 2.551189946369514, 1.250269603955747, 4.131949477655565, 4.639900676472422, 1.4692493872534547, 0.5449710620549436, 0.15651509505516803, 2.674853447959097, 3.2305505150084386, 3.1250152459998293, 4.587821812838506, 1.0028849703856124, 2.7345537718593182, 1.0130223391885336, 3.9646830004802003, 1.7942182254155266, 0.7864536204054212, 2.8507011556658357, 4.15416625774662, 4.944502102200223, 4.793398363619312, 1.5215720369825803, 3.583908366784584, 3.7035676296416344, 2.7332620887205716, 3.8856605203101373, 1.6767052208926665, 1.4322302078004152, 0.15724647112181245, 0.812757454662888, 3.335976832469731, 4.38548277880167, 3.239532855197433, 4.987032786629329, 3.4963623605950733, 2.2011110252684873, 0.28950447831072146, 2.813046654453077, 2.908095449637763, 3.0159918071617904, 0.846085483821577, 3.9883350481903115, 3.5494114943366437, 2.8534224933150303, 4.882284796172044, 2.3335770958651416, 0.7134950408229446, 0.6013092985181667, 3.0041338225141794, 2.365244164704844, 3.813969411004776, 4.060522256457096, 4.684671291866578, 4.477098422321335, 4.715055287871355, 2.9442539020950442, 0.9867318139820253, 4.557328618140646, 4.592198511958278, 3.3953020320957923, 1.0458990085661553, 4.781627596982857, 2.367341192096041, 0.01854370394220428, 2.3227638155670762, 1.1595532519616192, 0.649384200903379, 4.92567079460401, 2.331955748842016, 1.4147757974140323, 2.280984753307544, 3.4272956812749915, 4.904198720621721, 3.455020339437456, 0.8904862564183014, 4.576470558109776, 0.8697017509267785, 0.6469316605596459, 0.36830360158415176, 0.039755976912798086, 2.780850222652018, 1.0945628223112673, 3.9756861542430166, 3.382669610959579, 3.07555105188384, 1.938951680025844, 2.9566311533709904, 0.2068675594665903, 2.925338842962338, 1.0730998275578414, 2.0610847734114817, 2.2754731561274544, 4.716184371479551, 4.056644573543103, 0.9974354755138926, 4.429030925760284, 1.2001682740864146, 3.4231795136760006, 0.7817299928723886, 4.413541960201975, 0.2996920668581099, 1.8941979323032072, 0.7917916911127276, 4.005726515965407, 4.109507163813127, 2.5303182494478147, 4.265225652871086, 4.791800038736616, 1.9363746668567339, 4.535272415966983, 0.7760534088879378, 2.842259994849709, 0.678888826729595, 3.1809496723903314, 3.0338145215200427, 1.482246355173999, 1.8353278446826797, 4.513042966856032, 4.280048971897604, 0.26296152317948907, 4.703101048023365, 0.5906169275565543, 3.672557521790958, 2.004936522478262, 4.251062305597417, 4.241486510627855, 2.1913929045125524, 2.08642778709271, 0.17999163321607559, 4.661118763470687, 3.621836399280639, 2.6879617044467476, 0.2680760151059025, 4.705234372864922, 0.2981306329543565, 4.485317684673858, 3.308926675881509, 3.7900362317581187, 1.382634503460281, 3.7409138411403653, 2.7157570257532946, 1.4460757473312058, 4.9492849908984615, 1.1467481748227848, 3.836410550803648, 3.459986107791948, 0.7796274515722179, 4.078595279819382, 3.8539229373740476, 0.29790506980230447, 0.15260229436146855, 2.1906290494118927, 0.3293665850818761, 2.300442540638386, 2.362326011494002, 2.7039193393990617, 3.0347124821093763, 4.1552678050921426, 3.3066284364212524, 1.6170642887312126, 0.03668509358500438, 4.545921902487622, 3.2438255778153406, 4.110479256363323, 1.6680316774489294, 0.8441884653839749, 0.8860984233717961, 0.8011557843457623, 3.3125989622432455, 2.2553432184407103, 0.728298695751719, 2.4635615095522256, 4.908157755265593, 2.370557558321344, 2.6049323715228585, 2.602768846099183, 2.7730325146201666, 1.9402212373213945, 2.735091990161811, 4.277960204676649, 1.7598403599969292, 1.8327115829723035, 0.192721788225646, 4.4649026457000565, 2.2094148132974922, 4.2485639427512805, 1.6463070850847095, 4.675393909347278, 2.6531588995395357, 2.0983630048260515, 4.693423222553758, 1.5556133952284363, 2.0557507891319213, 0.5923992426507707, 0.09252939432987717, 0.09202415156358501, 3.857584263631309, 2.96290103630474, 1.5470940471531824, 1.2346703024961942, 1.0083388266316424, 2.532480393604791, 3.899737284150806, 1.1211909374754954, 0.7677453500294584, 1.2550992560294705, 1.09200606128124, 0.6954464237814956, 2.9482882715718888, 4.548691034814405, 3.4913269962868965, 3.519993157289931, 0.49665575119046734, 4.532567812160929, 4.920465769072741, 3.055201448836204, 4.010561951725461, 0.3608645449630937, 3.681647128886027, 3.8046432670317505, 4.049057318396729, 2.164547810939067, 2.919070539152501], "x": [62.74198369782453, 67.04779376983957, 76.03273129559054, 65.9867667075374, 98.78521915031287, 68.61585793707707, 76.8794796806613, 41.02665424756938, 45.351920605158746, 51.867290682215895, 89.66165329614535, 66.12889388380066, 77.75644688892152, 97.38176437421212, 21.448203602113626, 44.73936213733487, 66.09267157791481, 16.01160317663427, 77.35965863284187, 93.25791805111746, 84.75102030458372, 42.51433815207738, 78.25133271874071, 10.746384747706694, 51.12907462559091, 40.49952665234987, 34.66467185721098, 23.855192906623312, 25.72300385533265, 69.40354353794129, 64.3894300950593, 26.674818959890644, 58.64511675165468, 9.853259565042706, 78.98361346368468, 52.20463938300624, 7.443668523724778, 21.74849787369316, 74.41688406942393, 20.611736799925286, 61.17738278577461, 14.46525373789469, 47.9455240268181, 92.90808586179644, 56.136835732368276, 16.514631784989, 44.43358928185719, 74.21945270882084, 75.39328363595929, 31.368028620150255, 74.22729656455704, 46.836523538053356, 91.63107509372162, 22.370876449533604, 15.61692792694659, 12.86742412801688, 21.226341860916285, 95.40157134736818, 86.16061400965678, 81.76308689839507, 39.65969088315866, 58.54054626822855, 66.85620436579745, 22.82177896724248, 35.39467531497596, 66.49130033754635, 20.295963284290963, 13.098608360578723, 97.53899396441588, 85.94271418789512, 22.3356821660591, 71.81564933371745, 73.25981941431756, 1.1111672714802845, 97.28077752156257, 54.194201912691355, 16.524679849019385, 33.03483842090154, 24.256242927148097, 63.477016931597085, 21.370794491347887, 50.37281724098934, 22.33353073440879, 70.24697380943992, 32.30960811054209, 6.577360433815338, 65.8202545245579, 13.926600871278305, 97.72806411150185, 66.36586470892063, 19.357239733121645, 91.62933704820709, 97.20192825360623, 92.885344851766, 33.03663798613427, 46.95586948328657, 69.08607861608577, 61.63696443735276, 90.59156460629148, 83.40171705173712, 16.768375414635152, 53.23666260270996, 48.207310597294494, 82.57099287212945, 19.960575160698436, 41.090124631597114, 98.0149539844896, 56.92127711429541, 48.78711313455395, 40.51955117428571, 47.18899844218099, 85.15903729795565, 17.33250232510114, 43.954464746955516, 38.63393631272602, 59.363342133455156, 70.08488772574455, 68.28681481263905, 46.05041286281511, 27.808381285210793, 53.93886084206242, 22.957033287778817, 55.35713783167251, 97.30374638881003, 26.808796404500157, 82.48938538324417, 94.77229975044501, 16.316259519053368, 68.58344598998303, 48.94199810221447, 60.709763330511905, 75.87646218242534, 2.655809062768899, 10.445209016188484, 13.24921610318519, 83.99753145590807, 93.45859564316818, 21.6484654598745, 11.453033601203433, 0.9541135203639306, 69.78775257284317, 68.41709489848067, 96.79799438250953, 38.48457166801496, 7.042553112396133, 63.62289520385709, 13.252260998541743, 0.9067846714334138, 87.86819074043353, 32.4983104439976, 80.62777617131108, 12.796510575981145, 77.44188400753043, 40.06628717701661, 35.43033775167343, 76.3200853097284, 55.289159613330185, 76.89133287188106, 96.9450713871163, 86.68736068223582, 30.775633298368643, 86.1694844232165, 65.35679016866507, 38.89924006639403, 10.829485036926878, 5.749562180351431, 49.72058718995057, 99.01474404324169, 11.065472104004225, 30.07520200859215, 53.07094496938735, 45.29592791476329, 16.998931124809356, 64.67929737007707, 5.874585361570905, 76.9123172142538, 13.293896589076027, 18.50104889454781, 90.8830766318314, 13.785015205590923, 70.35110276947066, 88.98241407576644, 52.78537413499193, 54.876446798350095, 82.75366581982202, 0.14226968945140195, 69.19479700283179, 51.86099483970498, 96.18902155375683, 36.29583132545978, 10.266743232969356, 3.8814179728017706, 32.4711619437971, 95.2530057899065, 55.35158291806401, 92.98490438166593, 73.14761902465496, 17.60398774062444, 79.22280368820621, 78.65377338747344, 58.30049344872816, 4.902435656243476, 20.161290751668602, 12.93690537488732, 87.28189736457225, 69.58215429734094, 2.4432887585793983, 77.45949094129435, 9.893759088982401, 12.239694592701811, 82.30723355699139, 3.697360400220029, 47.83643391307919, 16.44379135154661, 69.54959565239818, 37.32534782763626, 67.91270424895669, 98.03840173222649, 5.334695044750292, 26.16139723796317, 52.21698991116622, 82.95618109786822, 37.59449877853578, 62.63279989670286, 4.62967992314316, 13.31527805703111, 47.339679818936034, 16.55400773114356, 54.47667102360617, 47.63557261414183, 53.96937976080096, 90.59706374719461, 21.14992472609345, 48.9443262817646, 34.22111556089299, 1.6477569738101994, 88.68448959364052, 67.86539509778564, 8.0312090022015, 39.94112143710831, 36.59361168331142, 11.303688965136283, 94.51760325825839, 33.13660757868953, 5.164678281753932, 45.57673279180003, 66.00826878606806, 26.49664931991239, 1.6941728818890667, 22.930363788556917, 73.74693776621665, 78.11470522318592, 76.78587837259748, 89.63850930699635, 75.46172836922234, 8.280990548503397, 44.06389246291859, 8.086898487297155, 79.60945210374196, 58.74926838211343, 39.634835959576584, 38.315571901870214, 14.28622355337026, 13.22345454144801, 12.958634816110736, 75.43883942281599, 1.077963054952824, 48.73645644388759, 42.90850203485951, 57.54242700622312, 76.65913236336903, 72.9221538897885, 58.47271193495808, 83.80473249300348, 75.53201656963014, 27.470616738087372, 4.183289861424155, 57.541004557619345, 20.565860620044297, 93.35750535975532, 11.76418506034973, 55.60259364757737, 14.37940529723225, 33.944732182730064, 16.545297048770045, 70.44635213947382, 73.37036835681971, 40.11630257856568, 15.680575265538167, 92.86000091595068, 68.18694012206964, 53.81376838412481, 72.33811670566706, 15.164833594995308, 5.587051592729586, 74.7044415435475, 62.44686419827663, 86.36481047064878, 89.60498589466393, 23.788317231536727, 52.47041585634074, 88.8004108829735, 56.96232046087704, 74.35034557594223, 97.73695319215652, 71.95747950791076, 13.154616123067807, 40.88270525309703, 77.58447619684196, 67.65237779438729, 94.84349601436271, 33.349422484636484, 16.148926645553217, 48.69636971865226, 26.320182861624485, 4.776862004573701, 74.93329060692739, 48.58357886035252, 36.71434097458358, 19.468656543994143, 48.86309661309498, 64.63795518778402, 69.77794411178624, 38.34114372597131, 24.69007392696485, 29.851423971932846, 54.70746609785439, 21.511183452198235, 57.730953657899995, 18.095501173107376, 66.5460884752531, 71.97997854133837, 44.561390752136354, 38.80358837764308, 77.51668995201084, 16.18212562680649, 89.73001644203696, 1.4633579793000062, 88.89370075701892, 21.318898036722434, 86.48255045818655, 53.85429705824066, 27.494028721041776, 57.099537338233056, 85.18845265824858, 59.54288883429022, 69.59770353472851, 8.460343540320858, 76.6310459680746, 50.784298388606786, 39.08081776948373, 24.148387880006574, 5.031236719360854, 51.69105843210705, 93.33748115195318, 21.657266535300945, 58.52659461328871, 23.086161881995015, 60.42614322620856, 79.09519167664095, 44.25021490830217, 37.570867047161805, 12.373353227739948, 19.008467768105287, 2.5657047859221294, 63.78476023472596, 7.876075254175374, 26.626634392198923, 59.572522637917636, 54.82392828371198, 65.05235840141377, 59.90402806205313, 97.03539881580457, 64.1005497382239, 74.90014099254343, 20.200373666547865, 9.235747713811005, 65.40160127495243, 36.6588856585153, 65.21822567855592, 13.136637605657286, 68.40194749841, 3.938160295912796, 61.13682170175313, 20.683874121806056, 87.23010779229676, 74.73331666868714, 4.276454480370684, 45.06670235119186, 97.623741129443, 50.6968341438642, 97.71004772026924, 80.67482686171653, 89.9405504572389, 28.767159962081866, 75.69849933158184, 21.89983748473758, 29.935343894189803, 65.36575827043954, 97.93083468532107, 9.780076958060302, 6.881802268425541, 0.9642596914417823, 42.07547526524999, 64.5109083534927, 96.20882788030548, 73.12276546104238, 10.206536248332487, 17.441278161267526, 60.8025899099802, 41.229635360836326, 75.84131505370975, 99.73507667725654, 2.5529973687221874, 10.013331851363583, 40.57234198057228, 3.800666117632734, 82.09148097750585, 16.12944740666705, 5.575278961788566, 51.75013537477472, 22.048762068390293, 35.52648070991849, 53.02716271452237, 80.38274914188682, 50.131493772381354, 25.51778890160935, 26.479015735529366, 19.776253889503526, 42.132250502873895, 37.338062665442926, 31.867446230435736, 66.42707862200487, 63.118303108832386, 0.23786597643987717, 6.117057316783548, 95.37655794277366, 23.13456919912742, 8.107631833992379, 95.88034758400048, 64.94274524218972, 90.34934208745099, 78.58607419579535, 78.621835391906, 94.0107057699168, 7.706068113613284, 31.294179581210003, 88.80835521687696, 89.78678611068818, 88.29797132031206, 76.51262144746515, 76.91202675197395, 6.558173349693785, 40.05970780987694, 57.32401224035124, 40.22588379901879, 9.797103499873039, 42.017668393729934, 79.6267424277258, 61.778139364733256, 12.338102365789194, 11.471106674339893, 89.1913269973563, 45.85221129542909, 92.19318022353588, 48.852526360096114, 19.376541416559757, 91.35307496638583, 81.19389624242234, 2.061799562805988, 82.70046937490228, 48.145367147581865, 84.81772849776705, 23.511843602864325, 99.65593608212168, 9.687159781170884, 62.990448964557835, 75.93380399751409, 57.48118697004243, 41.85378550817166, 12.177951148304055, 87.10372420597338, 85.96467395742097, 29.16815027483378, 35.27841248822212, 69.76295905935778, 19.280991812475623, 4.445077004207332, 46.05502746052693, 77.11875990105462, 57.18869264971011, 1.487516824305024, 59.57269729242478, 66.12611939008185, 69.30748150206614, 52.0372529866108, 68.11231535181118, 89.77834211971738, 0.5119107519272914, 97.41428930094665], "expected": [-217.7842890133458, 101.26743904552154, 21.807846017372967, 1.4044794018756883, 11.182609179623547, 94.51142086080276, 101.20137680188508, 61.37171089170279, 15.625138886022517, -90.55036248267386, 19.427437115560767, -9.597218725778063, 78.19827777944786, 39.120150090544065, 25.202620328045757, 67.74011055439371, 23.547865489831366, -8.036919397607214, 33.84924299857849, 111.47641434016022, 112.46413498438493, 60.16669924313011, 120.64914080585486, 17.087601129920994, 8.914116629597169, 63.027111002451264, 47.79010327847158, 35.67015692284625, 21.564896453215017, 110.24332929892617, -68.75047850797856, 32.639355782359026, 18.856075942227452, 10.149058755029904, 56.23755392507117, 67.13574718435576, -14.5947595868491, 24.745345753279643, 62.691537351286804, 32.44713514894785, 78.68617905993456, 20.75278845577424, -116.08139286558287, 93.76226643264164, -10.298164760261166, 18.782311486829734, -107.53228585394139, 31.213400230305453, -200.27609693255076, 27.182520814858993, 84.25086831300287, 67.1338193154796, 74.2729261853081, 34.3578023481518, 17.816911140237593, 18.619699027020996, 27.38538602785429, 114.96881631746669, 117.33320076663595, 71.4229354086649, -33.142561396642805, 33.43306634042108, 92.49547840047089, 30.562656715396933, 39.47791208179627, 106.78557973472901, 31.335371938168663, 18.87554161063721, 40.04119297769859, -31.719194615311288, 29.241889186573392, 38.57118427202751, 57.53609233917376, 0.6638968740229511, 66.04587893927464, 66.20041254621415, 7.26783985373982, 11.849444476621056, 37.29899899577827, 93.84171603511803, 15.109486090768117, 75.79965462541212, 31.182736937413207, 37.37458019440371, 38.633057646200186, 8.853219989552567, -12.70837646941495, -7.701134220573246, 111.99144091066086, 97.08247350354345, 6.334562070398851, 22.214143329351817, 62.02482683673643, 47.78266892017656, 35.79024730174525, -42.72702786399418, 16.401453874008336, -85.4800866733643, 74.89631180405179, 132.7269351373688, 26.503548372607522, 40.88287231759249, 61.72377270970676, 30.564284212801574, 22.31277492468097, 65.89711012667973, 52.015713607343926, 73.68237744998089, 60.538930446711376, 45.37375383196607, 0.6021978185822938, 125.7773872266594, 26.505180181203595, 16.095011154485253, 57.12963920195447, -24.07588781164205, 64.39223587907284, 31.473398584063837, 8.643123082044704, 34.48337759207606, 57.586319472610626, 30.33226121114902, -100.055190393725, -75.39931112268023, 28.07616897130784, 118.75775444428241, 67.85215062954869, 4.554185581033827, 101.34426702216501, 35.682302839724436, 85.13299585123667, 67.13099105942, 3.9871685554086356, -5.92956030225022, 9.93153173172267, 4.376799104449713, 14.582185457318037, -35.2160659553538, 0.6357985586933996, 1.303869864871755, 94.85315165325217, 42.02274453285607, 16.682859881516627, 56.187545636483726, 2.310747367367494, 89.5932250777373, 21.08889209782782, 1.1278276452159155, 62.505545644907386, 27.982270396931934, 116.93532420111801, 17.958505530770285, 89.68956962837795, 60.06890994849093, 40.92734713090729, 42.4025063572117, 53.26725829373139, -53.26729370777459, 99.67000418956115, 130.51535080291345, 45.97141012775818, -168.38669663263386, 92.64779577594173, -36.74967617888497, 14.603329088825106, 8.369793081232414, 34.08788642381989, 94.09641503963479, -3.244575644829899, -83.9504686804641, 71.88616985491096, 69.01306234414903, 24.390697920204147, 69.1084825466169, 8.75916142575608, -65.75232148477002, -19.6881442241575, 27.19114505752363, 134.22440387130234, 6.440364025518391, 53.82106882417999, 119.31430674595042, -26.69758268943841, 71.23389954279229, 123.47597831644708, -0.09478424342412742, 64.35716455292206, 9.89967599448292, 90.50805353949566, -115.35157685181126, -15.645893203985693, -10.987931699721178, 50.667897277900636, 145.89417661187056, 86.5066974402377, 37.98736914142177, 49.61508223135647, 5.980915811888832, 96.59383396331131, 98.77815289074536, 52.9398099321633, 7.2369202891314215, 30.621885989324014, 16.476416295885194, 56.71056206315189, 80.02010751142731, 2.2801237592156784, 43.405967262252496, 13.681050642756068, 14.967007098846606, 118.20549810396368, 5.81451383973836, 37.82100308870557, -39.041598695869425, 87.400153480981, 23.75091723176141, 61.574329020702436, 76.25277665608704, -0.024178148553389376, 17.34969736196544, 64.87888707866173, -69.69125206404445, 19.043403025270923, 36.72115929063319, 6.420557117383455, 18.505036840827195, 6.749321193847531, 23.57371747056713, 37.89320433488314, 8.20252819622409, 65.29980787940367, 26.48835644064043, -49.46610140716142, -65.12920621307094, -4.914856198715608, 0.5805942453173383, 104.0570020445381, 45.59149150493991, 11.254093079705846, 59.29914811897814, 4.614052033827044, 4.850114070010745, -93.69530529392406, 47.343193670868196, -0.9142438104070463, 2.6167477856211687, -37.7666201033055, 36.28102366663197, 2.576932249891551, 34.839062838642704, 77.89673227054809, 86.11483983481548, -0.2716991305626036, 9.745683553969881, 87.79070660621656, 6.899048443115367, 52.62403273106236, 2.256199206702065, 103.87014487266407, 89.14161761244848, 24.175232978105072, 5.263000316147224, 18.58461067110125, 13.512282194078562, -29.58910477628651, 107.96998743357575, 1.1447844350792022, 74.97077146124398, -49.12814448717178, 61.25414872655571, 122.017649198421, 110.66760608608405, 63.96277555231658, -239.53641298203019, -55.914650767068125, -83.34512055847753, 5.364245805554912, 53.89059724193074, 4.593574406205742, 132.45089762793464, 18.054411993154524, 21.393189620347005, -8.728623743739407, -62.95399601756392, 16.278828306483977, 82.60909523500291, 83.60107102852548, 61.11339040598238, 0.045172865367272955, 93.41421427392534, 0.8822215551764759, 74.12447848090825, 42.2866493389566, -3.6429194954455353, 5.852799609856408, 106.38747284367014, 99.8073413643104, 135.3543536374239, 37.61115835908748, 30.364690958392938, 68.69933599578891, 89.28844019532706, 77.31455811134056, 38.42654038696864, 35.11032084968112, -133.11707899500118, -2.7272485285535857, 49.25407446146714, 114.69310924822094, 79.52057617638266, 152.39842755477807, 41.74424257831182, 12.74089341051583, -60.36326574095992, 27.22212590610596, 5.099292462134256, 82.72101261046012, -8.120010611826864, 50.78965968904264, 24.66254004324313, 51.23389246138396, 102.49080183340594, 59.12999204523769, -12.943195346401527, -12.558503318945473, 32.83624639221709, 47.09663220922866, 28.796386427008688, 80.89905503619822, 27.94480558121906, 99.75093381965485, 111.62371773177432, 48.11986026516216, -0.5182993292442425, 117.57240250566615, 24.667367026585314, 109.68531894068356, 0.06567083924801932, 139.0991730759316, 18.371932728702866, -344.85997660959634, 45.386127641460355, 4.07007313414687, -24.651625986567645, 135.8296200339891, 50.415398203406646, 24.148389768264874, 6.976460697538779, 94.39193990135227, 80.75169237182995, 48.45350558354212, -2.800913793806823, 7.652149206347206, -7.216327169604808, -40.6498371839873, -21.63231036110309, -188.7479800632277, 23.61152712141783, 5.459806256905706, 109.16697399961251, 53.9261980400169, 42.210271339977396, 8.192984360717952, 20.60613891829767, -4.042720736658983, 68.4672197493953, 0.5556688859277166, 19.25724558037771, 48.97981392730836, 85.03191697831433, 91.09647160287571, -0.15382267219946433, 144.4062181635708, 11.695900107314989, 92.16985163718094, -4.974258703302892, 13.712107128127133, -78.80891483969104, 23.417530981623162, -15.225647270949896, 18.230039978704326, 96.67268511842346, 3.655971755141405, 88.67865955004922, 32.40968919081782, 57.64318144196988, 112.98819178895062, -1.0842263334575588, 47.07665512794269, -37.80946951106922, 58.665351955422594, 108.44063802738414, 31.750283582162297, 54.61398233778827, 43.35129426893642, 110.06292706458844, -29.252654423424218, 46.34656064673649, -34.4208009372164, 127.3970762469885, 6.803142811294231, 9.959130259838558, 1.3932721348804917, 33.009782752600444, 47.44476758635762, -164.98321891317661, 112.55461871525617, 13.1356201648938, 17.245642408596677, -80.0456793511034, 63.85132967705667, -91.78494348659652, 149.6833331771741, 3.0549775906884946, 13.341518821970869, 13.145063089951467, 5.014332540621989, 82.015197088573, 5.949403232421819, 8.916226520963376, 7.086159641214214, 29.645380308909065, 44.09776194314063, -13.200534139842864, 112.99826141244533, 67.63197585540856, -30.901542235106977, -49.7784345743439, 15.508315614745802, -46.791399422694894, 31.106396514007635, 27.394746001063208, 66.07516972309507, 70.06868147045711, 0.338810797361226, 7.315566674088291, 45.83915048730299, -76.46865282494727, 12.276823777874295, 112.82752186584334, 91.79914402223129, 46.226725438989426, -13.31087066906432, -9.507522125304572, -20.842160636817244, 9.229812590528512, 25.451623995049435, -28.15615782070484, 80.95249103095634, 140.47312503182184, 66.03997047696396, 73.63609078743104, 6.273390044357712, 40.858558152525696, 37.99447032949835, 40.47387917786294, 14.239857827002249, 23.74935680061903, 48.237610587445474, -101.71817856263596, 18.460853711794293, 9.093463896878903, 129.02248167610128, 22.858916077975113, 142.19077889532716, 47.667899867891265, 14.36106936761474, 141.246672683294, 35.877141592892826, 1.4858175641648024, -43.29985483783375, -114.59699469043784, -202.35001275612746, 31.741956355555562, 108.24317530412719, 4.227266927331292, 13.278636896346278, 0.6305733449244543, 53.41147382118538, 56.95920124346805, 1.3930535799557051, -23.021268352874113, 19.532433986965557, 2.567276396549998, -12.813165392341684, 75.42943831832321, 29.207608130091227, 5.557599287387707, 57.95836590565364, -53.97219235864654, 86.42862067155555, 2.370214059770928, 66.53350074952571, 91.84464153691121, -70.6418316055876, 67.82328661514, 91.01319012657775, 125.55358336252237, 0.39530335749593876, 104.35654367317937]} diff --git a/base/special/xlogyf/test/fixtures/python/runner.py b/base/special/xlogyf/test/fixtures/python/runner.py new file mode 100644 index 000000000..1146bd03d --- /dev/null +++ b/base/special/xlogyf/test/fixtures/python/runner.py @@ -0,0 +1,87 @@ +#!/usr/bin/env python +# +# @license Apache-2.0 +# +# Copyright (c) 2024 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Generate fixtures.""" + +import os +import json +import numpy as np +from scipy.special import xlogy + +# Get the file path: +FILE = os.path.realpath(__file__) + +# Extract the directory in which this file resides: +DIR = os.path.dirname(FILE) + + +def gen(x, y, name): + """Generate fixture data and writes them to file. + + # Arguments + + * `x`: first parameter + * `y`: second parameter + * `name::str`: output filename + + # Examples + + ``` python + python> x = random(500) * 5.0 + python> y = random(500) * 5.0 + python> gen(x, y, './data.json') + ``` + """ + out = xlogy(x, y) + + # Store data to be written to file as a dictionary: + data = { + "x": x.tolist(), + "y": y.tolist(), + "expected": out.tolist() + } + + # Based on the script directory, create an output filepath: + filepath = os.path.join(DIR, name) + + # Write the data to the output filepath as JSON: + with open(filepath, "w", encoding="utf-8") as outfile: + json.dump(data, outfile) + + +def main(): + """Generate fixture data.""" + x = np.random.random(500) * 5.0 + y = np.random.random(500) * 5.0 + gen(x, y, "small_small.json") + + x = np.random.random(500) * 5.0 + y = np.random.random(500) * 100.0 + gen(x, y, "small_large.json") + + x = np.random.random(500) * 100.0 + y = np.random.random(500) * 5.0 + gen(x, y, "large_small.json") + + x = np.random.random(500) * 100.0 + y = np.random.random(500) * 100.0 + gen(x, y, "large_large.json") + + +if __name__ == "__main__": + main() diff --git a/base/special/xlogyf/test/fixtures/python/small_large.json b/base/special/xlogyf/test/fixtures/python/small_large.json new file mode 100644 index 000000000..5f22858a5 --- /dev/null +++ b/base/special/xlogyf/test/fixtures/python/small_large.json @@ -0,0 +1 @@ +{"y": [24.531979000501337, 91.79466891704186, 55.80687634212607, 59.254387367708276, 61.893824289239305, 29.14556677388035, 79.49763902240335, 9.04187571223436, 45.997308807906, 9.720653744963093, 15.22132444766633, 7.5928490028906666, 39.35095935836649, 68.31312044707859, 84.42163406607975, 80.52444756908999, 47.75463643266218, 6.771790739591332, 56.58380660050932, 26.79703726550916, 30.819292444033263, 84.76166964217833, 33.86887207338516, 63.588823313372664, 18.021733736967636, 17.31065071691621, 83.14721524331148, 82.04359733591033, 61.600316950979696, 96.67269007657072, 74.52929391157544, 44.495346139061944, 56.99244558525237, 11.342694530449327, 70.91759504462406, 62.964162366022656, 36.60952529151464, 93.39270404020186, 9.405020140081898, 60.16063568609359, 16.267193675472512, 39.286376816949186, 4.6509693996400925, 28.337096933226235, 14.160527634051267, 25.69134028107245, 29.163372264907782, 86.59783546308424, 73.45098627378572, 44.76566725928821, 89.83667497295875, 0.8451519753919334, 23.486882950370468, 8.768781177911244, 71.5165345627034, 23.18978766701283, 93.54208214698004, 54.583477095787295, 16.521660060132483, 11.23992765763705, 54.074523850214916, 95.76587684913524, 41.88582970706853, 51.6357055846258, 41.32272626437615, 4.694022285271171, 3.0745306158545205, 13.264626540123736, 13.257164915027818, 70.17106854757111, 80.51939827815761, 32.01624432296405, 61.20495653354241, 81.6166464799208, 64.29317386790426, 33.11003208290199, 31.83774477255138, 31.810100391201534, 38.109075240303525, 7.440843107497697, 90.75215129258574, 96.86658094233965, 19.754677866397984, 99.41117763905234, 2.351454676365561, 48.19392120455939, 46.77309224819911, 1.915469696807337, 36.67158042895262, 41.365792534718246, 89.30098250359674, 61.739342964520894, 22.25195910758829, 96.48489876092934, 28.652825183925657, 35.77538711258268, 37.17849542937239, 26.68188389863545, 52.35019573861152, 30.99641357392415, 81.39586786133273, 70.63967522122154, 39.35750824291105, 18.890053112832504, 5.552255252193694, 73.11520939079625, 59.953826120081175, 58.617367036701985, 42.771079768263874, 97.97287996072993, 47.14041742097215, 33.78040559314696, 79.23589396165337, 3.703048351024474, 4.537214653931587, 66.24491220556537, 16.56654617234812, 33.39546351851681, 45.379178242620036, 48.89550761486091, 66.39541119124765, 76.82479877410758, 58.99308948453277, 56.382343206106576, 22.257216406245796, 40.00546376698247, 78.02440510978103, 61.989775050185024, 63.14819190766745, 89.58451845494533, 15.806732264891266, 26.996066532615682, 57.80043419467608, 75.3105103873915, 56.11571863292944, 12.53188353293967, 87.35097577387471, 93.07803937125033, 70.17929970134126, 45.41772093944816, 46.04261058464031, 53.77882844428723, 8.305798630031557, 31.19930365041497, 48.03462924871293, 77.58176307277834, 10.550719425752508, 49.52211095275448, 23.543321912272162, 0.4580265023859664, 91.01303597274513, 54.7581367901135, 97.44099268645057, 9.639589898218093, 70.84577132620508, 60.67687110090666, 61.947708423421275, 90.61822252425677, 44.00283869917244, 94.8756077482325, 92.28595936673187, 68.34310656361569, 68.57772723694873, 63.93808304858092, 45.569928921438965, 0.45012722890265255, 66.71051831938513, 61.39370611501727, 21.510781218529594, 14.254004925025054, 27.09693977264451, 64.93864005027518, 33.41180016425472, 24.252920454013037, 22.870174688245946, 98.89080314141552, 2.228525217354138, 53.76151131614315, 80.77245286347673, 23.30156399751112, 97.4872690459164, 13.688314369990785, 35.476475719253344, 86.00395495546813, 61.24548983824244, 62.29709949524134, 67.47905971398352, 16.47437213633457, 11.247569252749102, 88.13836003701196, 65.02460341419236, 25.426069031219324, 44.95931313297148, 72.06635943368362, 32.30800543351031, 56.732400670200754, 40.82702260355138, 43.10372893859744, 34.82175205665131, 84.73314799428985, 42.78508339355906, 99.74185512004946, 62.741667891013755, 65.9635051227958, 12.114379766883076, 95.11053008640674, 46.20054355404839, 80.97293574568396, 60.09188635042, 18.680446645594895, 76.36491120994683, 2.7413147897132117, 34.01348865752299, 1.8746512078998911, 27.574660340528123, 81.8979776608431, 16.51799130007795, 38.854454367515025, 78.21467606966844, 72.01147718035774, 12.15279071636105, 10.509494541349273, 24.471546824704436, 38.91584742282802, 84.11044367354894, 65.28647604280405, 77.66236593280017, 0.95545208964255, 36.53577109418873, 97.56470721253945, 25.44377394423837, 19.838633452296605, 94.22729370958308, 26.873612966413784, 88.18724423523643, 63.826593501423886, 50.16583835039291, 7.300122506106788, 50.87122982153161, 73.75278511603356, 89.25974316002505, 49.35435543368356, 5.620067734513712, 96.1377033008921, 7.491845246359075, 76.45252328554177, 77.78117658341797, 83.78529997998623, 31.759212324617447, 32.551084932094234, 14.328485653714418, 63.91529066741847, 1.888399585409084, 16.143615498478127, 43.39719730255024, 2.9863419332888497, 91.00162473205258, 16.89600821455983, 3.1593590096724022, 5.71218353813755, 79.88834784432969, 37.03509288633564, 11.701727343297353, 48.18647153296184, 22.652122214392712, 14.430621871928295, 32.867754366825544, 12.790453213536546, 94.46468209383575, 14.174938305562645, 76.92493848899876, 64.78819591582952, 36.64180515938623, 35.58221178215809, 34.72621620056169, 28.873373654123714, 99.06700723655644, 37.1044389122535, 6.12424864626846, 94.63511889695754, 36.874551264022784, 56.72581179288325, 98.77681266493819, 82.1405999030782, 4.048904571665146, 46.64562123743386, 64.35174739456134, 13.031795831886884, 88.67150099341484, 22.86671129858582, 33.79374284884753, 88.95853202747975, 1.5959294766676457, 68.92266770755715, 16.84248192418094, 50.51547453743442, 64.49310773100184, 0.5213665244081844, 79.65472829239681, 43.54166807503416, 35.55680855421585, 24.216872547582323, 36.64608497208436, 62.99724419193819, 98.07857706844226, 66.88453203499887, 37.783443533167905, 71.43746966558662, 49.98026422119668, 18.169792798016115, 88.29337243171202, 18.416258439523002, 47.840333247969745, 31.228214857864955, 98.43027793536983, 54.23672005070639, 48.74164954717044, 31.04777802046109, 35.82187672283859, 52.80796708149757, 18.02262491694765, 29.468627483083676, 26.28836165863887, 78.37845961153114, 47.305631799264816, 82.30489785788576, 44.66242190528939, 26.173891839999143, 31.658621966266697, 92.02986808814121, 82.58102726533592, 86.00302399879611, 68.9393353880659, 82.04057036717481, 43.3204313878995, 28.180636432055117, 94.8304791800113, 24.46651619911807, 95.43507444363331, 78.93902021633681, 80.90722636669558, 15.789762886577375, 21.97966690129106, 11.084585513324118, 62.76543110565137, 63.12551482877545, 64.53454184136586, 57.204235643788856, 42.51385050391132, 92.46182578711216, 60.665463607779344, 19.972031538320778, 60.872417634240485, 27.3170747310153, 40.82909991076507, 97.43237359323642, 87.02109998346128, 81.09101569751876, 4.393630018600414, 91.72142022170425, 97.48432160346925, 46.986958668142144, 83.71747953932079, 17.075822371790437, 26.327438976930594, 44.90642958376171, 96.00976954116037, 20.752401023365064, 27.768116273492893, 86.54040888068192, 45.07385288852116, 96.83555019194307, 45.30999523001963, 31.96285103229809, 33.083915385427, 39.94966018231951, 6.465205743052382, 23.538507043638678, 12.090074429912157, 9.123882060014154, 34.99841117004115, 52.4344401177366, 59.13511769029224, 58.23759215725312, 61.936158049340484, 67.65337081795096, 12.952597679209877, 50.18685930473088, 99.96728140036667, 46.30097202232599, 70.10742881486497, 21.904367575486148, 99.88455177068765, 52.89021270857699, 63.96444363770454, 78.40687512072452, 99.07860213964696, 63.084025362624566, 97.26309750495481, 14.534574757575802, 51.90326768243712, 1.818968718733005, 96.09207543911529, 98.68850095348479, 62.81108667893838, 90.136808023963, 29.154366680557832, 68.05135282894547, 63.69829497188098, 65.9960716908593, 16.878470249976463, 45.823886311070126, 29.585770918369146, 94.15731266917948, 56.628649678811186, 38.57923179957615, 81.39936248384954, 87.30139328270894, 64.58688102384902, 58.9627528623882, 79.63342427359767, 4.427467723613587, 70.99374850872512, 70.73894391218657, 75.59544569663935, 78.52939968722158, 70.41331656354814, 89.09990542298694, 4.925451262197511, 20.74026014385961, 72.50208000929324, 81.14851324595337, 13.55095404832667, 90.33788973508912, 87.38663577272969, 35.5036646338584, 7.236333454285404, 81.3269477760813, 3.416131131895128, 19.030857160015003, 66.03827180281499, 96.20462573807396, 96.01412760407534, 1.6557405303382677, 43.440749940005354, 83.07247965388139, 61.36661265883089, 36.93199371990222, 66.61618565987469, 69.15130831525157, 42.541549690042714, 97.06777551393871, 81.07169021971634, 86.82388209724665, 68.16704320482138, 39.607023139499745, 65.81578786576446, 25.732977005229518, 55.594061030781475, 21.39970090562463, 67.59842423329738, 24.521421547312716, 96.9304213060725, 27.93724978095429, 56.592978369891696, 86.72478471775716, 40.731031783349124, 77.6057252655199, 81.39231097496878, 10.847307205797952, 4.0668221237782465, 52.286629070583366, 25.83228970155822, 1.5613447428896587, 90.39648666501508, 12.113135058364444, 4.290883135767565, 40.5658342092457, 30.093721166211452, 18.79797057909175, 44.78025142669225, 27.681330246394566, 37.58308759238541, 89.64354872641724, 80.45066587116686, 40.26110572925076, 99.13970397675045, 10.538042959289184, 25.413515578077238, 7.9016212254165, 5.252832310894484, 34.16983875379669, 16.28140952051298, 85.97398159336852, 61.54631351188905, 52.32082553542055, 90.37996016473608, 64.20002268913373, 33.85048562796833, 73.06337639089756], "x": [2.6094298977668102, 2.3612530607697355, 2.050897654445696, 2.762349234974843, 4.336102585732205, 3.479216449953496, 1.767862895823118, 3.752090184259132, 2.02266802117867, 4.845082132318154, 3.218048168764307, 2.988598123489725, 4.38105464351623, 2.0326139388823963, 0.5836788439746671, 2.7896458534300574, 0.7779992202087438, 0.8931864875645501, 3.8349407936113007, 3.4369809734422745, 1.74731821301091, 2.0715037463885917, 4.617029570879476, 1.6235823542175543, 2.6807931179659223, 3.929717567067122, 1.0149191957526271, 4.019363428333394, 1.037205586556225, 1.6151348547406514, 0.3761080464826, 3.5524146895003152, 3.349290680951746, 4.368238660895675, 2.17901283855893, 3.573159407164707, 2.128504708320869, 2.7053329151691727, 3.0427654169852136, 4.1142735760232085, 1.2723083997657807, 1.3419010929688362, 1.0655581380156687, 0.5312821497780579, 4.638150676831467, 1.673391678533821, 2.812016545374928, 3.1112179834393383, 0.513559682390205, 0.1956989950936322, 0.57565143672068, 3.4273897384587326, 3.9130592989590633, 2.8825388159779166, 3.9405032614966866, 0.5971135467149469, 3.7205361953905443, 1.1471715634876016, 1.6875024038746917, 2.2066328567224662, 0.17866512502021925, 4.459562047382991, 0.07569145996870585, 1.4175992312137682, 3.0402921142449184, 0.11440463480757446, 4.775147195740156, 1.0940985824764886, 1.5845578620116563, 3.4270497864365845, 0.24806990160522568, 3.4629282238485724, 0.35704458600103905, 1.3111650083317494, 1.5690263400901734, 4.920893963558663, 4.590537941062313, 3.643081743818902, 2.2305838087050094, 1.7867401579040116, 0.6492350028883759, 4.779908928261127, 2.198449602189314, 1.9334708292327636, 4.523224331884629, 0.8426427187746843, 0.9076502687410243, 0.3687657317681231, 4.548386085371536, 3.789021474051559, 2.982492280138431, 0.13990356545443783, 3.259397868165666, 0.32115388414992674, 4.181515303004322, 2.7309903278018792, 1.1224931685811745, 4.981090193431404, 4.710855162169438, 2.0740237834977613, 4.515155612506481, 0.48902872832029043, 1.8122951544726078, 1.7121633513133845, 2.9911509576795394, 4.514684562091469, 1.0392084399998724, 2.138249440753297, 1.8617962840215296, 2.0668755322199663, 4.540879270350623, 2.5066068106690738, 1.6719109307455682, 1.1913477430846382, 1.7582259094172064, 2.6045380023203673, 2.7204138473286092, 2.311242552089534, 1.5981726354855907, 1.299904257848385, 1.5484210977632262, 4.4818828820236405, 2.834216967077394, 0.23929616217632121, 1.3277006721787727, 4.052259193877294, 0.5743286185006063, 0.14959046703113932, 3.7680280416653593, 2.296336233949648, 3.178436553640709, 4.330488905892028, 2.876274396073989, 3.1860150805953698, 0.11215584718023641, 2.8540617364576644, 2.8589264342025915, 1.2550731197814458, 0.744292948556054, 3.387225623067745, 2.9164283641862347, 0.549529036121249, 1.981558611289691, 4.479396638387588, 1.70952066393677, 1.5419090839191534, 4.98386736764738, 2.2722754898672877, 2.4481470295631973, 3.5948486694178072, 3.408635160833116, 1.1994965784569556, 4.347853238931301, 1.0666908975245049, 3.6516442739442527, 0.6348193393783114, 4.729613406041163, 3.100732711214433, 0.41985801373930043, 0.2251785442037607, 0.0657904406644827, 0.1787578820621294, 4.618547513928552, 1.4131331793487, 2.5236939026224685, 4.814055249228262, 3.351742447350215, 0.04174246687347949, 1.6159454830923674, 1.8258510471535994, 1.725352510314142, 0.8414328128888443, 4.251966486266814, 2.372106570641863, 1.5342444925466414, 3.0247757629093797, 3.649770328614002, 1.6776196758294604, 0.7432706942813516, 0.5024021696266923, 0.40109496213915075, 1.636406206614136, 0.053302192273751436, 3.3113037424615266, 4.00171115672441, 2.1708975692936234, 1.7998896172092111, 2.609163235691935, 0.9530942580156476, 1.9254143785106337, 3.536917471928158, 4.092840393860024, 2.4156815933868243, 2.965305980142322, 4.99133040696133, 0.7134121188023873, 3.1508916247360075, 3.733884831250629, 1.376308005703205, 0.3911813042600748, 3.0258862189764777, 4.175985534162779, 3.5102804495572344, 0.8185983074692277, 2.427730622729815, 3.386267075834172, 4.3713718837820315, 4.7418177286138645, 2.4757784417994966, 1.786820436645874, 0.5923593467791921, 2.1996836738626864, 2.284269506168983, 3.360019599457006, 2.932595715483367, 0.12190486093221375, 1.4044840321649406, 3.0733946294909638, 3.1700772561911443, 2.0254369238930536, 2.5819298905370496, 0.9873229635453057, 0.7372276362582952, 1.6766541069859453, 4.980920176790899, 1.7966943495968335, 0.08276993685746414, 1.320989004314856, 1.6576064010798752, 2.6101946335600363, 0.9472535122189546, 0.9011462733811909, 1.9111038727829976, 1.4718581493234302, 1.8178536518931794, 3.524578194262375, 3.8919931199309317, 1.2470919696951432, 4.206700479319222, 0.06874362862242189, 2.596656450467088, 4.611759829589782, 1.0014014920819214, 2.601594882296616, 4.782074551050693, 2.642620318882167, 1.2032750567141626, 0.3752478568623402, 1.4533762591537251, 0.2622530670560297, 2.710623398581916, 1.6118090914552945, 1.024368854472582, 2.84416159051164, 0.8226989111186733, 4.700219337519243, 0.7802513270863098, 2.243480736922142, 2.8959980887469525, 1.3112307173875293, 0.8737455410101769, 1.5531851900262166, 4.234036357925743, 0.06534558611986818, 4.081479519997285, 1.9365889977656696, 4.989383247141702, 4.892500567063537, 2.9094021639654817, 2.979835608756136, 0.8553321673867204, 3.1006191846745694, 0.6668169497222465, 2.868808137622497, 1.7883333096355136, 2.459692308771812, 1.0964821123962003, 1.9948685728242688, 4.57066409704381, 2.777602130659626, 0.5906365235311933, 3.6829313657415508, 4.571564748169127, 1.3280921566281434, 1.3170596297833788, 0.9719724114013223, 2.553961841566342, 2.102828400120402, 0.6369145951202748, 0.19887250791380484, 4.147934225409429, 0.2423659535154199, 4.976720032197174, 3.9496266130702558, 4.752301542461557, 2.8572784043418604, 0.44172412812564565, 4.298623674221265, 2.1444891241573343, 1.5535945759600471, 4.334538853459887, 3.030832788812212, 2.671030307401814, 4.82686395183779, 0.24353245325000272, 3.893455601249869, 3.088335560062956, 1.7893150338428998, 0.9004379127382517, 4.283781090470219, 4.194948692649559, 0.6651673165909666, 3.6795399604454557, 4.223786482719337, 1.7450624730497615, 2.72448869188112, 3.116867369593402, 4.67014371493499, 0.6999299786152002, 3.8185559536824956, 3.854491445805003, 3.313131189569536, 2.7684506698924727, 0.24973603459475524, 3.593825108998506, 1.6982104537986054, 3.6028419209111284, 3.046409331027522, 3.541586272594828, 2.173331884480505, 1.4266193075385503, 1.4983971575888033, 4.7919476834370744, 0.6848342926336415, 4.284687263681047, 2.815488470023805, 0.7450597628075534, 3.520737265828258, 2.156322310527849, 1.151634023302035, 2.7805983946967316, 2.192178881627898, 2.8125219293296437, 0.5859221747959542, 3.048979034892176, 1.8921625883363897, 0.29672947393020677, 1.5834376300660713, 3.7126776353243147, 3.6063042497295674, 2.72964474313415, 4.559466626278042, 1.1564991305009902, 3.2073093962650856, 2.097773704491473, 0.24637550503551264, 0.33924610169009717, 3.897095251713607, 4.954802966578194, 2.4738464161947293, 4.5844544514249765, 2.4623802295814685, 1.9070570796379416, 4.674994409930837, 3.7135074699670803, 4.682999858355933, 3.6396739394481448, 1.5735957941800511, 0.783106603741881, 1.8539384846652625, 2.5096811938579604, 4.094930183904674, 2.9643732577168826, 2.125391314645211, 2.169688109036122, 4.5422353596871154, 1.810513118835958, 3.4764310659991255, 1.3452738787882712, 3.286611664860848, 4.732088124005177, 0.7740402029979221, 3.8766982642983856, 1.7057002460348236, 0.29798192491749587, 2.905643564591234, 4.3490567378759435, 1.3797054372054012, 2.4820394990862087, 2.6698766633011513, 3.9656436194053812, 1.2091168901172777, 1.9822957624351996, 1.0032536454198004, 2.6767294244122732, 4.480190009133282, 1.027317102133084, 3.5144807871092967, 3.0108781878887507, 2.092517634557386, 3.9226599334304946, 3.1361170127367366, 0.7534493392342995, 0.3473318126490138, 4.867245853188665, 2.243747425286571, 0.1710041753396485, 4.84630352811402, 1.5661525988240559, 3.086405370583658, 3.4133033946761553, 4.1899780312019335, 4.258413059125978, 2.2071403330497303, 2.631407990593723, 0.12129724457440372, 3.879833144093394, 2.7425116166, 0.03702699113191099, 1.6203069616693226, 3.3523803194526653, 1.3174613660767276, 3.2894128237239126, 0.0031148142100445586, 0.054864322703985224, 3.9222942847559157, 3.80031215194222, 2.657960825133887, 2.892418770366938, 3.565377448744023, 3.8601298159138158, 0.9660060771161733, 3.7216986728663457, 0.6369581343012543, 2.276315762039229, 3.2439574515053966, 4.274553755983961, 2.519694817180007, 0.12351745108855172, 3.0765995781025604, 4.731936772945086, 4.714044288141401, 0.8599839982854091, 0.761530378392451, 1.2597543340727784, 0.8685151696024551, 0.010542715590408092, 4.342824330131768, 4.895210384666604, 4.078888420886085, 1.2839824904468289, 4.160127056344193, 1.567506541293262, 3.6193750560149605, 0.5627902499305942, 4.24097541390658, 1.8123089080362593, 4.771675097753192, 4.062921080380487, 3.843757078733958, 3.083855669682647, 2.4296839192850457, 4.843954227714074, 4.490483989847237, 3.578036110666179, 1.7203992086347042, 2.9394593464590346, 4.370040560087713, 0.45303342942654534, 1.1304484437318008, 4.763765931141515, 4.6015880015911055, 3.6463660173587007, 2.6794602604784057, 3.5056490818483206, 3.03555951743022, 1.2046308930870282, 1.4330889767928146, 2.620800266957791, 4.910149567406324, 1.4300664616669505, 4.134973097442754, 1.6519386876651292, 0.2712428402024003, 3.662366360004379, 1.832220080655735, 2.4186962031487336, 2.705958971896454, 0.44866400180901433, 0.04874431093846776, 4.009227499853613, 4.410149047464223, 2.656350471362439, 3.907070631078243, 0.8028311140474731, 1.5772859604535543, 2.029415747693965, 2.590246892426482, 4.107298432019581, 4.244206977196759], "expected": [8.350117043554038, 10.67181124270658, 8.248499315958103, 11.275467119740236, 17.88824608776901, 11.732971438616637, 7.735685977256861, 8.261602218894629, 7.743952179251857, 11.018941963817062, 8.761771281966103, 6.058506688480375, 16.089512353377696, 8.585968296271828, 2.589096447279319, 12.24253053540488, 3.0078042379648715, 1.7084563547193468, 15.476758157764253, 11.30179474188319, 5.990052982307349, 9.1971523020924, 16.26346987882675, 6.741824610537611, 7.751723633939036, 11.204889997331572, 4.48656470074964, 17.71434260785516, 4.273978849161356, 7.383315939414384, 1.6214740970264545, 13.482780014432239, 13.540910011025588, 10.608590326512031, 9.285903675374845, 14.802047647923036, 7.663273509397973, 12.273590152930307, 6.819578529818576, 16.856253910728555, 3.5486595098009017, 4.925954949286218, 1.637843489886879, 1.7766987788480086, 12.293225189331187, 5.432087059171228, 9.484688701404039, 13.879998450926442, 2.206569945089186, 0.7439382794612459, 2.5892763050466936, -0.5766199890382643, 12.351345083597545, 6.258561994565031, 16.825667872522267, 1.8771530191817505, 16.885323925980774, 4.588377916787229, 4.7328911655515835, 5.338887312069558, 0.7129387340083321, 20.344104778813886, 0.28270363497785717, 5.591313886250772, 11.314181446595555, 0.17690272502679127, 5.36321729002795, 2.828355157397639, 4.095350252516028, 14.568169643829423, 1.0886542987567747, 12.003352132064249, 1.4689628955812974, 5.7717919526125225, 6.532568152202863, 17.22232342317834, 15.886256732727984, 12.604275424190135, 8.120334289216379, 3.585959200889983, 2.9268372079733918, 21.860122778894997, 6.558833256235912, 8.892543859662982, 3.8675112622244208, 3.2654367842260457, 3.4901949172993842, 0.23968403154949602, 16.383296139442916, 14.104459172809381, 13.397392574014171, 0.5768114007366806, 10.112053905820403, 1.4674762247688675, 14.030037786482973, 9.769462859142205, 4.058632801699626, 16.357824629340808, 18.645355929557216, 7.121931174223153, 19.8636347450944, 2.082084781232618, 6.655992425103076, 5.031423994325619, 5.127443525414461, 19.37719051074955, 4.254077379350413, 8.704879798574115, 6.9926502273933835, 9.475985041534898, 17.49660155947689, 8.822957482328032, 7.310312512354031, 1.5596604737631157, 2.6589884473086687, 10.921762000404442, 7.637250038353007, 8.108809751671707, 6.09711390017384, 5.056218773615921, 6.496598829221671, 19.45821773360517, 11.556293823558425, 0.9648794670482909, 4.119412117309249, 14.94884916023793, 2.502362232932421, 0.6173552878824263, 15.620300774727788, 10.322450498780023, 8.773870502023188, 14.271954055055454, 11.669034547188804, 13.768745553503217, 0.45169824925708024, 7.215856017626459, 12.779213064594009, 5.689796518265037, 3.1640290632272636, 12.925322241977831, 11.168658651890919, 2.1898071920289723, 4.194868232226712, 15.410897272256413, 6.619130998900447, 6.709358935624138, 11.742958635703994, 8.867371626036917, 7.733310172400093, -2.806959327507832, 15.376362579850513, 4.801496010619295, 19.909893864201088, 2.4169920412895833, 15.557849707903463, 2.606290530667373, 19.51575941771632, 13.973933582656684, 1.5888494299495703, 1.0251403287176628, 0.29769463932344087, 0.7551699487760059, 19.52707020014254, 5.875687873342063, 9.638613005051418, -3.842699276751906, 14.078533742791938, 0.17186656456451355, 4.95861639845145, 4.85135545869635, 5.6926639563958785, 3.5116717355200855, 14.919764049280799, 7.563549666226143, 4.801930034453213, 13.895868985671049, 2.9247070616411786, 6.684572578347124, 3.2641743220197834, 1.58182352161031, 1.8369033402101158, 4.281726392037026, 0.19022858540065232, 14.749849148560207, 16.466602067733973, 8.969963942711452, 7.5808062697694, 7.310369129361067, 2.306633011783692, 8.623753579995334, 14.765801789188167, 13.24351057432148, 9.193499375983583, 12.684355359471502, 17.34644566166468, 2.8810046109897627, 11.687741512824406, 14.052884466353298, 4.886226831702414, 1.736652092670939, 11.365802113506101, 19.220330048079006, 14.529141298852663, 3.4291915093791765, 6.055714653561652, 15.424580930966199, 16.75543155039812, 20.8360922769505, 10.1404786042713, 5.230876344073244, 2.568187757821593, 2.2182438470633934, 8.056063861749928, 2.111512318815374, 9.727118656434952, 0.5370487316098931, 3.9388054809343425, 11.248079510288033, 13.81981644706017, 8.662440308232574, 6.448521801719626, 2.322459162832843, 2.3572935417307983, 6.138903956906009, 22.07608943342819, 7.507999235658641, 0.3602454553947893, -0.06019833842844093, 5.964551538287347, 11.956037816463528, 3.0657585923582467, 2.6922927411063573, 8.687323759570146, 4.844098404230931, 8.143006953964171, 14.648745905319878, 15.238454095933896, 2.4790830644421566, 16.529377820989236, 0.2956470131638858, 11.663013790727765, 17.981371564277172, 1.7287631732865267, 11.878313974182355, 9.63021407660111, 11.460172093195565, 5.23893861446361, 1.6616941643531977, 5.026040832505996, 0.913377787879107, 7.216355949152786, 6.701190787338422, 0.6512216944468532, 7.911105562168723, 3.1018997464172853, 5.142271228194197, 3.519618046897289, 6.342493674570684, 3.3314668944550547, 2.2849524268668406, 3.827555936216869, 5.609896654576148, 10.414613632557193, 0.25321926330124395, 12.73525093515553, 5.169438619961042, 17.425381408459064, 12.469511547174616, 13.232618654429622, 7.900961102488922, 3.7145623004874273, 12.933065313113682, 2.401334401836326, 10.246940423431917, 6.344103316536878, 8.271748074291992, 5.039208612746827, 7.208929593128684, 8.283213794519789, 12.638169252981752, 2.130734043246703, 14.872521504193509, 20.99657007005223, 5.8548045093011325, 1.841837256238288, 3.734880833722293, 10.635626975682904, 5.3987852418738465, 2.856522815050019, 0.6224077476685723, 14.601871903510869, 1.0877796812977591, 2.3263991846409287, 16.71871067564029, 13.420045143810505, 11.207045127818208, 1.840469359389413, -2.799702122447259, 9.38793303674178, 5.862828385234019, 15.479208924259204, 9.659414436139631, 9.61919907640258, 19.99813651237054, 1.1167835658932572, 16.36406825087089, 11.216436374014956, 7.638268306343192, 3.522178342559553, 12.42193910606908, 18.79615998276797, 1.9377879660897586, 14.231978825087342, 14.53540938231265, 8.008699772112774, 10.879859178872536, 12.113810667022411, 16.04440596830108, 2.50474057624913, 15.146921067556145, 11.145755037529305, 11.209403631607595, 9.050414947124642, 1.089235986852027, 13.860051408267687, 7.489839381510594, 13.68767374328931, 9.94580269768149, 12.236217855820252, 9.828052753874085, 6.296783710189742, 6.674434014497982, 20.285401935643378, 3.018211203751897, 16.147376883666333, 9.399888603610828, 3.3915797423348346, 11.256872613643889, 9.829479172378548, 5.031115524991972, 12.216011671725381, 6.049014689879249, 8.69102406049291, 1.4094682812651942, 12.620957421010864, 7.843250530843503, 1.2365312456214257, 6.407582963561234, 13.921909669294385, 16.32500316612456, 11.206214106966968, 13.65256079677494, 4.751800682124569, 10.608214170575964, 7.781471417041148, 1.1281924962492118, 1.5151241866477125, 17.129963449560062, 7.33388019481945, 11.17870819324153, 20.995387363009463, 9.47984399129797, 8.443395655102277, 13.266061311247585, 12.145440988315995, 17.816852201462694, 16.61310953946097, 4.772184092761523, 2.6029590077245794, 8.269699249989394, 9.557624712563525, 18.72617380083357, 11.304719393316711, 7.363576175443568, 7.591841155429717, 16.750038711561512, 3.3792047557687783, 10.980786149045342, 3.3529401954828604, 7.266354539095618, 16.824005519792145, 3.0648614356274386, 15.816250325170918, 6.932871628341802, 1.229504455730573, 12.245536046708585, 11.139223196585265, 5.402586016104883, 11.429402080189188, 10.239412073176617, 16.854099446122028, 3.7321642370716246, 9.126519497571028, 3.9811294821047802, 11.130717203028478, 19.542192844418903, 4.721460534489168, 14.5656516604625, 13.782052987454827, 5.600686804338301, 15.492081549862846, 1.8762437919953534, 3.4397274302609455, 1.5949367200241915, 20.151038348937142, 10.099844468554117, 0.5767294858018258, 20.45267357071916, 6.506045027641044, 12.93078918887463, 9.646128034528585, 16.025850978162484, 14.424495018292445, 10.031379807021802, 10.621717917816719, 0.4430641549897316, 17.068811610963373, 12.25728933235214, 0.15432891781451205, 6.605839072002951, 14.674823281712028, 1.9601556467553758, 14.021424208139571, 0.013265982054104, 0.23730992412066002, 17.114825495845363, 16.167981137561817, 11.933601603970182, 4.611718469031442, 10.810498052411567, 16.535310951185494, 4.246834136369726, 9.700447387767376, 2.868577245847424, 10.175910780766857, 11.579747042741895, 8.459831957060095, 11.082820765191176, 0.1517422586626729, 9.063852253611586, 19.827924480097924, 21.526576898195856, 3.925392955385598, 0.3840004437156047, 4.751034899532387, 3.8385881988364012, 0.043402946512987976, 15.673592676523512, 20.55473177844097, 17.279382690558563, 4.815552240492301, 19.034284651594955, 6.889714526047797, 16.156462161920793, 2.376078604903308, 15.602575921320462, 7.587883215680225, 15.497319080488444, 16.32512722508577, 11.774876819316876, 12.994086982343726, 7.773888099962709, 22.156214740093088, 14.953136179878191, 14.44054198384306, 7.677693866282859, 10.896547148204313, 19.016848562953893, 1.9930212718119538, 2.6948951104619914, 6.682905675292374, 18.207290438856546, 11.856615806316052, 1.1938267255875226, 15.790163533091778, 7.571566980687382, 1.7545359464664612, 5.306622705324703, 8.922033725317963, 14.405145971210503, 5.436779804773231, 13.731245768959516, 5.990845105166688, 1.2194647461679538, 16.069160335496317, 6.770760223435373, 11.117609674808007, 6.372511320883714, 1.4515541840920498, 0.1007578032184557, 6.65037595180223, 15.573750498814617, 7.411281399393855, 17.402267279338517, 3.3074955605269425, 6.2419427621237, 9.1405343177878, 10.78061679820167, 14.465713454538951, 18.213280989018557]} diff --git a/base/special/xlogyf/test/fixtures/python/small_small.json b/base/special/xlogyf/test/fixtures/python/small_small.json new file mode 100644 index 000000000..42ad7cdc2 --- /dev/null +++ b/base/special/xlogyf/test/fixtures/python/small_small.json @@ -0,0 +1 @@ +{"y": [2.3042680539956457, 3.74995270711387, 1.4534131514118231, 3.7802706707214813, 3.579707081782142, 3.0352252523437553, 4.000592909884752, 1.9387323619542078, 3.687663349624915, 2.7339422493257786, 2.2426539813254127, 4.729171473147201, 4.070775384799065, 1.6378717967889245, 1.1068373876553146, 0.007544701857459257, 4.76110468377491, 2.230662678573567, 1.9525320744427015, 0.18522973665013653, 3.28323197779308, 0.5788724649155302, 3.5975644522292516, 1.5213123571535858, 0.7971031919840543, 0.6061440012319769, 0.9676162507192559, 0.756203165602255, 1.581010117031663, 4.952255987336413, 3.596238112007708, 2.7131243658696986, 0.646550452576099, 1.375293106706748, 2.2032355733990867, 1.3800771027629692, 4.795789010725659, 3.6532746947240833, 4.633088681363874, 4.343705621399235, 0.8112905923516944, 3.3592794303820153, 4.055043069344626, 4.920167315119239, 0.047800337013451655, 2.941287288246995, 0.6686546677229588, 4.931923723536549, 3.0988784009186654, 3.9925416893600083, 0.7757341912074017, 3.740048627298407, 0.12575663401658, 2.872989950942455, 2.5434728437542335, 4.57450349511766, 3.79765809322397, 3.556429604491847, 3.854686354932949, 3.4966877743056273, 2.7372422402622694, 0.3281282603750729, 4.359365384327231, 4.480946276425083, 1.6227146195664244, 4.484772701852439, 2.336376681073858, 4.688334040983577, 4.2282134108529155, 3.3898265222215835, 3.7338532883014466, 4.110120425838781, 2.0197861022508894, 1.877649568855539, 1.7443807782570142, 4.976766235901287, 3.55794407453568, 4.721071857259109, 0.6821215112765183, 1.6310742884962774, 1.2001441710383292, 4.073696729219479, 0.32992719097976686, 0.7248633317506664, 4.7979301859546695, 4.221431084180669, 3.1042718763475348, 2.7722221073331186, 0.5898496940890569, 0.4682273716055224, 0.7756696236653643, 3.2318356714452614, 4.473071586233754, 2.0282717164937747, 1.2365375107171368, 0.981247812765057, 4.538968613369791, 2.5135193808380456, 4.4413974611446765, 2.1652721151079524, 1.5460382296840869, 2.125883241588128, 4.157448742485814, 3.5079013946729636, 0.6800329224575002, 4.09778744681123, 3.1751034902183415, 1.5584567274604617, 1.6211046732520085, 4.868046348540803, 3.4268530889107858, 4.844964297931324, 3.3486012251981156, 1.577998065939591, 4.202762514604335, 3.7478510514248713, 0.4444035524058293, 1.9127278130469656, 4.742739302037171, 0.027950227643309122, 0.5370704866904052, 3.163915720663082, 4.480094309358067, 4.198543537871251, 4.705755443662402, 1.666024797129635, 2.849068760381226, 4.3998934329556665, 2.3345956933327887, 3.191962368374389, 1.8636886078260457, 4.8065666134554395, 4.571627798090335, 4.03566510236293, 0.6749637166198702, 3.014224244049027, 1.6869861770782146, 1.045619283417959, 1.0254596277820198, 4.06420646227542, 4.986207569560685, 1.6052544468439656, 1.8822721009807775, 1.406939076050688, 4.1577134758415255, 1.259961740983624, 0.5889205389605406, 3.4524865172129715, 3.3559004392892033, 0.09472568950321614, 4.336162677265293, 4.645744645190179, 4.039374507720354, 1.5328987325494485, 3.1026674063879156, 0.8916945292756001, 2.7244883413653316, 0.8071028158195248, 2.0603990886268186, 0.3057846992999719, 2.141546251787342, 4.184743018250507, 2.7066032005806617, 4.853031229798212, 0.024075858244411164, 1.857636784016245, 1.1238055886411735, 1.2188705386222987, 1.3549543928582697, 1.6778339460515617, 0.9238559019171649, 1.686929399900664, 1.4483665092256586, 0.8219673463118404, 2.5775462081890748, 0.9707891804606611, 3.319034350367533, 4.773453270680471, 1.6562028376695648, 4.625780454013349, 4.78177607927388, 0.6944235211101363, 0.3914803464056982, 4.084510903486579, 3.191927967325719, 4.609047066245137, 2.613233263501142, 4.724049795189575, 2.4945877390965228, 1.4352983683243792, 2.2987012843672563, 3.06969212808885, 2.170552977554956, 4.771308407887042, 0.2668324262777533, 0.6257474015518977, 1.8699961391055042, 1.3211929765879589, 2.636410183236339, 0.4831858745288309, 2.385546722290439, 0.5298849178690024, 0.04841361368938146, 0.45416497179740056, 1.5393561072465904, 1.8615555926155825, 1.6389664746645556, 0.6809360935636738, 3.3783448142215953, 4.620308550990183, 2.9155789281988675, 4.978426316216685, 3.9900621862968655, 1.3755950748419365, 0.44486422030052597, 0.4223262960454732, 0.7079232146952036, 0.5445343716355455, 1.445306791817376, 2.2095149562019767, 0.8914795308464979, 1.914235417304015, 2.3505166573333316, 1.440593573364669, 4.141622231212004, 2.363952109281911, 1.4199530570457053, 2.8765128844641623, 4.424989541714288, 4.363657416779702, 0.27425488950179877, 3.307132304844709, 3.7725737496671394, 0.07951646312469585, 1.1814070496262836, 3.366655547030603, 4.460716709998352, 0.8029792174178413, 0.6285666866688244, 1.6231699626723635, 1.5021579372131173, 0.9387833048852434, 1.624799287592591, 3.685529648024453, 2.635564370387891, 2.1990997837079136, 1.3031277345056747, 0.016311707373563022, 2.6311945207459226, 3.91222345660186, 2.0253807733686346, 1.9074116912808847, 3.494590750036806, 4.764185828260976, 3.8578611718547733, 1.9078347430378124, 3.64896063527301, 1.9958799724371135, 1.288564419165873, 1.1349328041174251, 0.9393842203550407, 2.6862748713263334, 0.7772966246435653, 2.97712601328529, 2.0912394376023222, 4.450311578882224, 1.2580092607301636, 4.463997798318394, 3.092672505037246, 1.405992932176714, 1.9730655443132927, 3.4950721540973175, 4.7438323782341545, 3.49839720920939, 0.7884932215827944, 4.503342963884896, 2.4086991222090126, 2.723471331277238, 3.762205723949694, 4.547704015846991, 3.0271587801602475, 2.829177268995502, 0.06446996393518478, 2.1337004441842518, 0.8018298895718978, 0.3341854657261545, 1.6217021089853771, 0.1991701332738105, 4.753580007696796, 3.880712831388978, 1.224041584942828, 0.3617004166206139, 0.7865781878342931, 2.231526299039293, 4.10229903948584, 3.7739765320718495, 2.972154723950395, 1.3413276936557068, 0.5543123213427947, 0.8727353681934008, 4.474711552127854, 0.6283450891568104, 2.079134438873837, 0.6578395222368616, 0.6596422044171829, 3.339149611564109, 0.7076934275458863, 1.1376454350813492, 0.5639384144970688, 3.87030049311183, 2.1124816328921487, 0.5870612177391704, 0.2115651157127335, 1.3289318238818533, 3.7551650348122907, 1.753272315864523, 3.0815463966320893, 3.2979813267959344, 1.1614901005340528, 3.8717393090100054, 1.0675138721014883, 3.3473020063489978, 1.3075232304838007, 4.481799936454381, 3.139608000229481, 4.672751991544228, 0.4074127768207314, 4.142399031545943, 1.274300476236348, 1.50853813083123, 2.8636436470509965, 2.671032390172881, 2.5839782782765743, 0.885592615453184, 4.880138443211464, 2.421323558571995, 1.1565169846122603, 4.8588228261989865, 3.720390388173459, 1.3103377263250087, 2.6483359639235617, 2.1650841960722, 1.7605306061340182, 3.1202369797465273, 1.9628989286365046, 2.0209553891903917, 1.1764117507584593, 4.504968747933354, 3.2163780873105594, 3.028007675092626, 0.2700894544859578, 4.261165083938641, 4.144208529062414, 0.2210671314920104, 4.490677949081336, 0.07520571414616928, 0.542418052358718, 2.1698459177729905, 4.41782453730868, 2.161288457021457, 4.213580925796155, 2.771817013416488, 4.85078389233886, 4.086479882124075, 2.2443987243999186, 3.1117399440093503, 1.4309890076047131, 0.046890382793491336, 4.951398386917293, 0.683184293142397, 3.3913510813228207, 3.8665826634883604, 3.6046311714672004, 1.755006007995037, 3.836706370628037, 1.187833815579022, 2.4392035175707343, 1.883002728489922, 2.6807931102361504, 0.6393541653156132, 0.3924755811918068, 4.093704048000801, 4.399308865438377, 2.435392085321441, 2.7820326750999196, 4.094960314732494, 3.15493200699494, 2.5184598590211476, 0.8767640000615939, 4.652643039596277, 0.6829768305669076, 4.593056539765295, 0.042121330698405846, 2.5132346287791703, 2.5152145799124797, 1.5439823080357025, 0.12215836794756074, 1.9020263161193025, 4.5694429277279855, 2.2156097969328843, 3.3699778901060284, 2.4998456563705003, 1.9184997050787789, 3.087232363577958, 4.428457487683735, 4.977522602456509, 3.065284786560049, 1.04092443884708, 1.6143018362723516, 3.16713171579734, 2.343373789027087, 1.799729629787152, 2.1044564337111282, 2.908158901591795, 0.43008872352279404, 4.3657851438964705, 1.7421543509701283, 1.4076689053529368, 3.5962870629210237, 3.4330764490642203, 0.7899862338894642, 1.4693053653110515, 1.2350763475756987, 3.441124988656013, 1.879532912516343, 0.07202601661487618, 3.152658678144882, 0.01828619894388428, 3.718303870333879, 4.160553045599845, 4.9264289980697615, 1.1920743311667676, 2.155644206873763, 3.6960977005875213, 1.0089208905527274, 3.4000265570050776, 1.2863998627730027, 2.6498410348113466, 1.9383767140575143, 3.9161966756596254, 1.8697814354421176, 1.1919822034613015, 1.7036458453207386, 4.794411133402955, 3.4155149796255007, 0.6223118456581456, 2.7791212245673123, 2.303165093211017, 3.254624297395543, 1.0727182434778042, 4.935968814305552, 4.0957611471713244, 0.5213500973633356, 2.2819740018073142, 4.617921745272767, 2.98509335126617, 1.4053649177242977, 1.2069824352364882, 2.774184559144834, 1.2445031069994612, 0.8108324365923536, 2.5991749622823166, 1.7886734140486926, 0.28946655538020893, 0.39158136700376156, 3.344090770003639, 4.75677984729102, 1.046938934087157, 4.351276444606644, 4.764322431868561, 1.4004939574836768, 4.933640391154841, 0.6237141338768071, 1.644097342533914, 4.898588683515776, 3.0920276818742454, 3.9564798381166826, 2.2599137944971135, 3.375204703851018, 3.3898417666755853, 4.766936291098278, 2.119625845566663, 0.6644401623861773, 3.523892254408105, 0.0431380646147983, 1.4413030310123798, 4.035016601430016, 3.9773566774694693, 2.6801993350217406, 3.856450039914268, 4.452544922011553, 2.904747436336399, 2.5002985764661814, 2.080145312260873, 1.827190715797804, 2.1602695864345667, 4.029374502669425, 4.717817491213221, 2.4086818421199654, 2.595304950735768], "x": [4.54806796470782, 4.379253822101239, 3.5304154253433095, 4.82980243513029, 4.746731921382005, 4.759979786778353, 2.259455826350602, 4.005301863283232, 4.828165127230742, 4.767593807190458, 1.0902186635212958, 0.3633504885341887, 0.23056263536138877, 3.933855079448546, 2.6595023529101427, 2.1385331362999005, 2.276931729009668, 3.995831285223485, 1.5776573094946744, 4.712827509883535, 2.4853338237380584, 1.7625719080962532, 1.8663564125548926, 0.38075723246030035, 4.177077529841733, 1.3665796905146832, 0.26756990590915575, 3.8741996661282503, 3.478475854831862, 1.8234464326584625, 2.0295686150124883, 3.552675241537779, 3.0105252741927098, 0.48610239800677135, 0.4668573338040638, 0.40059804455827686, 4.550895314896876, 2.2948546084079666, 1.1514205162866509, 2.6476488433941983, 3.3669609127496374, 2.588300826759369, 2.9264245804624633, 0.8954251585824419, 1.3520888488940208, 0.09958531194256048, 2.078460871851469, 2.306522825547051, 0.5669286845076899, 3.8065514859600915, 1.1459704503705543, 2.7620021539281367, 1.4195458670051146, 4.850721804065773, 0.884631399915955, 1.4507370711383953, 2.815778692852059, 4.995668423208002, 4.7593263874404474, 0.35605643373849694, 2.0884588959206294, 4.26474607602381, 4.051623838149952, 2.393536886938883, 2.0007778186898193, 1.4200843548014523, 3.1532238380121806, 4.088032504961044, 0.8391886909145685, 0.18287408259734295, 0.9029905327105264, 0.8682920479747291, 2.7099231956964704, 3.0371567171582647, 4.746050012205835, 2.5397009932072416, 4.27542228365464, 1.858604744441899, 4.632052619929757, 4.676485475169143, 3.731698488192563, 0.04963365244542273, 4.815766429053351, 1.0776737053952146, 3.956518587020899, 3.3780664319725737, 4.758729743682697, 3.4676962056153986, 0.2545585262796335, 2.5183668893665456, 0.38934920773524784, 0.4164307288417274, 1.4916651987521963, 2.203768093660085, 3.8232816830177367, 0.4943586309800929, 1.3197612253222406, 2.4566934463078316, 2.643036723928789, 2.327428642655405, 4.440315877542753, 1.3607601636456879, 4.3801708912328134, 0.1365731341439791, 3.6083606478850534, 0.42772093183991444, 2.554883372386714, 1.219440545945517, 2.556250474828879, 3.5169063326781567, 0.6353072476772759, 1.3413095834401352, 4.836670250294394, 0.14146063486857818, 2.209310352478439, 1.4592466313738712, 0.7629806309389814, 4.14053642856623, 4.218171910895742, 0.9023870641621184, 0.12039177665967571, 2.831835502091138, 3.032426318237147, 2.1492018254423617, 1.2497288086175307, 1.5210837952964096, 1.882924265529189, 0.2504482278849546, 0.7645523444067498, 0.8393561979286956, 4.011141689613736, 0.9602681154099302, 3.5652509984661878, 0.7176377484969843, 4.189859598287905, 0.4442278750572759, 2.3668376463896523, 4.391333866521222, 4.528599375864861, 2.9170531112828337, 2.0278981073299955, 1.090727519879251, 2.0576071788689654, 0.6734649144732718, 4.72908493391235, 1.389370800171104, 2.020360109712228, 3.536142403184127, 3.0816385545505494, 1.0065618427020917, 0.4170805714847281, 0.8173218375744001, 0.2734244409720443, 0.7844288758171636, 3.352456798196103, 0.9939976265647321, 0.9481235249185682, 3.6202277580821995, 0.06584685319542816, 0.03307110754625697, 4.744671560880381, 2.834495958483677, 3.0850692627183656, 4.1925429379685655, 2.062367868366481, 1.4939791103885618, 2.129547236784556, 0.8005718591320743, 1.129321211901528, 2.6477018866417885, 3.293695542373625, 0.5134106456453602, 2.453169336184937, 3.109291357092821, 4.769660370369173, 0.3842829977064638, 2.026740853265761, 4.73014662783947, 1.9022863722239975, 4.89280569335922, 1.415538330452188, 3.5752819218617544, 4.3153012559654815, 1.1591742783635894, 1.762800521780724, 4.648997564543795, 4.177723830246828, 1.3845388776451002, 2.2295841670234684, 4.377457291338514, 1.8488095064780992, 0.27447338220360495, 4.392760026802679, 2.723599755936299, 0.9198710616887407, 0.9481858686776579, 3.6052942805137747, 3.3223493274090155, 3.773553549558884, 2.850988842328668, 0.3317718525642033, 1.5169628027389321, 1.496244933228713, 3.2836013927729053, 1.5357983605143137, 1.0579427395355212, 4.6065900397947255, 3.8505644612126484, 2.61152553271073, 2.635185258051182, 3.713056270178722, 0.9662971604665382, 2.843312443211966, 4.1013746615861875, 2.4289660405930595, 3.402862835823665, 4.423039482183178, 1.9604781115136434, 0.36800745967417947, 0.6190653263494822, 3.379390497671426, 0.4651915545529717, 1.6787481406937217, 2.5511165662261215, 2.688631733669391, 0.6591538772629907, 0.9648502851035173, 3.3584707520425408, 4.999968261896827, 3.018623985584059, 4.453351398850463, 3.074152309940266, 3.590134766999422, 0.9504802076939778, 3.331208436246531, 0.5340332819722504, 3.494870863562359, 3.8667728606399008, 1.0129008888353104, 0.058658212261903375, 4.066260239641112, 1.4460684976816056, 1.3860269346735747, 1.3185585152910573, 2.1226006585988872, 1.257931488551528, 2.686054837570197, 2.917377122472155, 2.718932850293532, 4.947189485342136, 0.7345258883058081, 2.3036967426344104, 2.8971634888938387, 4.320573365899713, 1.1699339790823082, 3.4005133533374576, 0.9748599346304143, 0.9753687899117264, 4.699146571433203, 1.3104962468215868, 4.313963142075672, 4.244614917898228, 0.2990957451412407, 4.6115146968921765, 1.6339078864943246, 0.7687646544247395, 0.1471631648988403, 2.1795470796137635, 3.1201612650706894, 4.0956602329181235, 2.3767495617463457, 1.91371939523092, 4.2070401472373655, 2.5697483318407253, 0.8307735745991102, 4.906778060765761, 3.880348957212492, 1.9414183901785282, 2.4619249221140738, 1.5594180310942245, 4.7728780734038105, 1.1649140870288355, 0.23480021840704135, 2.815435321941533, 4.551497201290969, 0.5095177635080511, 0.34299580618612713, 3.5221672202216334, 1.1444528297230572, 0.12368757922680385, 0.577895125491461, 2.451989256898069, 3.616897312289611, 1.4038554294445893, 3.564545506167221, 4.003397150254578, 0.2639742708456394, 0.008703722970608285, 4.9643158996688355, 2.7670975385418135, 2.5267834433238336, 4.945097412419192, 2.7015024728985404, 4.016456420288938, 2.330440311772826, 1.7509850155108757, 3.398067017466057, 0.2855908347652575, 4.44578721837803, 1.0913702489767818, 4.237857413456453, 3.676921119577578, 2.815679476736472, 0.11884801373235776, 1.4073721195903093, 3.9913094743140114, 4.106599456365702, 0.5305432929748066, 1.2228065904133256, 4.072511156137637, 3.8642195061190403, 2.2073899451415473, 2.9177803504421185, 4.588242593947924, 3.4359230665962914, 2.6883553785472363, 1.729887225459903, 2.4769370611114145, 1.9648508339823993, 1.1650026029300982, 2.294108943883146, 1.699173610039741, 2.599643701359283, 2.7531043690949475, 1.25405967987334, 4.821686300446187, 1.3712162790451088, 1.3550056024308788, 4.895545088788726, 0.49724519381425136, 0.26920359810545746, 0.4170566603852821, 4.154170926291099, 2.39464947573659, 4.3743692629073525, 3.010841349220039, 3.6180969724822325, 0.7514298862501401, 3.2351540800989937, 3.0558507221992155, 2.396726172560224, 2.6079515183509105, 1.716952602192925, 4.442399034104456, 2.9801115426016733, 3.379016123065397, 3.32171752600144, 3.1980190758420255, 4.841530453711362, 0.11227162937607227, 2.553923488813724, 2.6994684337014716, 0.6018951485669849, 4.25953733239292, 4.340151227555079, 3.4638932141253838, 3.258825233474055, 1.5938349641673355, 2.136226121420319, 2.0549003102276995, 1.1554089126300127, 3.514022661457716, 2.561844853258894, 0.5928164515963202, 0.4029885738492006, 2.008570956998873, 0.07628758763221999, 2.6033539277987434, 1.9226417857475693, 0.1196661293915674, 0.9764903915042672, 2.210289226622224, 3.2726811793439237, 2.340843623848187, 4.81123447833062, 4.755675751255065, 1.4412031603502207, 2.7345959822653936, 0.08999334753414245, 4.993986038969638, 2.603095627215258, 4.538723673639708, 0.6180279231433183, 0.3994918775093892, 0.7849589611430302, 2.4243240442346305, 4.687611492219963, 2.7739709771207433, 4.9953614974606095, 0.11066042131829323, 0.7148916832790081, 4.636245722400441, 3.146527519255063, 0.44097432109178547, 0.5832586974952209, 4.708483034479618, 1.9341531327406942, 1.4765400200898782, 1.4620528069010452, 0.39005690957735706, 4.197234546256637, 2.9041483709602733, 3.7230942393285265, 3.9033661936524373, 1.7798076834482701, 2.8989996477262854, 1.720636416519235, 0.3294037066787181, 0.6933888853932252, 3.6970788016987166, 1.9030334062530048, 0.041720247949599276, 0.4768414178829805, 4.9741561686229225, 3.527117564552242, 2.8378810679140978, 1.4038071258664737, 2.2407544265380395, 1.8963966028250245, 0.5710464325986853, 0.13531236873987829, 1.7665665935308046, 1.1809527972059353, 0.3989526713107572, 1.1572461796601585, 2.0473701132343574, 4.726133627377804, 1.9545627312221252, 3.7376795684826143, 3.9399879612491553, 1.4091990734156075, 0.10414026249895292, 2.080253868287307, 4.19796135616294, 2.574588618190379, 1.8732154272246633, 3.5415707678304957, 0.8166382322843802, 4.142680719045015, 1.0093957927167363, 1.3182422286286362, 1.2229704207518766, 0.2726968360219362, 2.6825691845693034, 4.735991857282061, 1.2623452044348915, 1.3374982564266935, 4.540907531823661, 0.8899133984218138, 3.275592444752424, 2.728647358239858, 4.466318619510537, 4.0648001574945205, 2.168475587917439, 1.2080864162397886, 2.7148519012648418, 3.2296262284797495, 4.899386861644957, 3.08002902953025, 1.7425440417072773, 1.7554979973473221, 0.9462221837133961, 3.680909829732107, 3.1807077927026004, 2.5982411597071042, 2.772850262501125, 3.6729046295675967, 2.7752064907841802, 1.7667481100549787, 0.9232781192891187, 1.0272259663203553, 3.6046646885827367, 4.813133713171014, 2.5388282693782065, 4.697246602723718, 2.342593817966417, 1.1322938420830702, 4.0620307006933025, 0.8356971076262992, 4.655706543504564, 4.312160488689457, 4.121752070591629, 4.327848175882223, 0.9203432244892507, 2.9877551719322666, 2.779446177229561, 1.5274378558380308, 2.4677928966281533, 0.8443797620007959, 2.5887662724689737], "expected": [3.7965592174769474, 5.788249085098323, 1.3200741818573547, 6.422650090273962, 6.0534169190951665, 5.284937203915041, 3.132605759873491, 2.6516473668646396, 6.300721785075424, 4.794981797780214, 0.8805259813821882, 0.5645558298884621, 0.32367154988031915, 1.940955104308594, 0.2699574359829692, -10.450818333522673, 3.5531057818006744, 3.205850271953779, 1.0556531498097899, -7.946573715190599, 2.9546351754901083, -0.9635506375512958, 2.3894160024988182, 0.15975558954504776, -0.947240604321301, -0.6841613067659466, -0.00880832250697858, -1.0826265057207773, 1.5933644155806959, 2.917228426495992, 2.597621185724447, 3.545928261289275, -1.312902247405191, 0.1549047330338821, 0.3687832108337916, 0.12904840136703205, 7.134612627047126, 2.9732685740824416, 1.7653852789191495, 3.8886754969984585, -0.7041290859573954, 3.1363126907115713, 4.096881185781432, 1.4267189939267217, -4.111327105192694, 0.10743734875946577, -0.8365546113438663, 3.680585637649037, 0.6412191553137366, 5.269896624176513, -0.29101387235986304, 3.6433532111598828, -2.9432959340271148, 5.119225177122172, 0.8258303121357914, 2.205843057727183, 3.7573316838928896, 6.338289888680328, 6.421709802788079, 0.44571720126646674, 2.102975631484414, -4.752422814820459, 5.965313115417875, 3.589908593385027, 0.9685774182299886, 2.1311032869474573, 2.675829855778548, 6.316326242297264, 1.209925086721992, 0.2232487933565467, 1.1896365278964778, 1.2272894172619953, 1.9050532861221054, 1.9134717993438501, 2.640700507826416, 4.075662197718272, 5.42629272823397, 2.8846212170644843, -1.7719800013123046, 2.287918471420126, 0.6808173866277902, 0.0697129899462883, -5.340122884443238, -0.3467653849975113, 6.20455157181051, 4.865004087547146, 5.39059001265124, 3.5358336737525558, -0.13437827175950126, -1.9109399795748014, -0.09890583109661602, 0.4884941893711513, 2.234626832482132, 1.5584696661115425, 0.811740600026945, -0.009358326995255023, 1.996402552906557, 2.264294833101261, 3.940686007372182, 1.7980457855203515, 1.9346264367394563, 1.0262681142170151, 6.24131252469031, 0.17140173694342056, -1.3914346232094705, 0.6032777825379909, 2.9517595358149467, 0.5410609587318865, 1.2349445787451092, 5.566181965753048, 0.7824713262770786, 2.1165058783982755, 5.845322590645902, 0.06452825836461361, 3.1719997759777385, 1.927931291708793, -0.6187942508710504, 2.6852637361199068, 6.566069165439564, -3.2281362573600965, -0.07483865048630385, 3.2617376180564555, 4.547560228948747, 3.083540859049969, 1.9355628850365245, 0.776422663290158, 1.9714070006388147, 0.37105916582563125, 0.6482170852763861, 0.974186927945689, 2.497166929745861, 1.5076046430079235, 5.418715659252005, 1.0012274623566064, -1.6470184845558165, 0.49013549345765084, 1.237722622474879, 0.1958944422716771, 0.11385319732386573, 4.090345872285007, 3.2581744381683624, 0.516222005150474, 1.3013945890434269, 0.22993201820720474, 6.7387818272186015, 0.32105768877331803, -1.0697079710250126, 4.381615314012075, 3.7310018057507275, -2.37223479741244, 0.6118529363272808, 1.255366841795701, 0.381725088195168, 0.33507706168183526, 3.7958600935936833, -0.11394359898565913, 0.9502858588996769, -0.7758300636417699, 0.04760067018261393, -0.039185096201374, 3.613200793306761, 4.0574259080601065, 3.071786241469084, 6.622555522007178, -7.6855080563088105, 0.9252289326580287, 0.24856239891296075, 0.15845289855335146, 0.34305141479038154, 1.370195373777406, -0.260857952556515, 0.2684675366828763, 0.9087431587129009, -0.6095909025146299, 4.516095038377021, -0.01139243459900647, 2.431428067849051, 7.393550285262807, 0.9597558541997402, 7.494041882815794, 2.2150514256758633, -1.3038096553842864, -4.046975675263985, 1.631192352748151, 2.0459505542693335, 7.103766491016406, 4.0130724353351335, 2.1497270490524283, 2.038115239316915, 1.58189377839814, 1.5388460627937193, 0.30784310740228754, 3.4043097905602613, 4.25595299390663, -1.215273334945911, -0.44451759596592794, 2.2566848010801577, 0.9253908974481219, 3.6581515377017872, -2.073677756293453, 0.2884518482915379, -0.9634161466997428, -4.5305910999374746, -2.5917294157408834, 0.662488456968604, 0.6574188196779565, 2.275958799669377, -1.4797211692569325, 3.1792343339, 4.033049553280211, 3.973224194167298, 1.5510169461442453, 3.934595139839586, 1.307872679625791, -1.9674288912820113, -2.933189669947444, -1.5278047277137585, -1.1916260661505944, 0.13554510066688977, 0.49077828501023857, -0.38820005651387995, 0.3020573814748057, 1.4347171827595697, 0.931298450914076, 3.8207810950142145, 0.5670930461880486, 0.33829948559770806, 3.548488851025236, 7.436292371950977, 4.4473706030116835, -5.761288909348814, 3.6769365238419067, 4.76682822198501, -2.4064174212711706, 0.555332910112447, 0.648273592100489, 5.2259134303193155, -0.8484722284014338, -0.4703032044554714, 0.028412923768859552, 1.6545722667027574, -0.09134901265284637, 0.6727557035235152, 1.7199465116887491, 2.057006655038317, 0.9913105036330647, 0.7111795526008075, -12.007551352139952, 2.630398777942886, 6.74849022363365, 0.5183973155604001, 1.487605692586673, 3.6249781028130803, 6.744962257208408, 1.5795429916455448, 2.196626062798466, 1.2619000037953478, 0.6740627811724615, 1.1913687343899504, 0.16587402561576028, -0.2697551484582379, 4.194339269554389, -0.07535216168903291, 5.030970741819753, 1.205426854067183, 1.1477457268565285, 0.0337784377231463, 3.260699926320216, 3.5227731630756183, 1.3955706939643364, 1.6152115438696257, 2.394740459181446, 6.549710796448495, 3.2181084878189594, -0.1974179451158145, 7.383817770430879, 3.411163619276909, 1.945121240699522, 3.262063850939568, 2.3619296269792773, 5.286556609871103, 1.211494285469715, -0.6437179097874147, 2.1336995349593995, -1.0052382163586784, -0.5584616085713587, 0.16583033719208237, -5.683354509716149, 1.7840852502374307, 0.16772268970816215, 0.1168262141671509, -2.493523473949212, -0.8682837585720838, 1.1268548049651306, 5.031525504223799, 5.317028768987404, 0.28754379067878166, 0.0025559347617521862, -2.929080388290883, -0.3766653368601498, 3.7862381635497804, -2.297817439551962, 1.9773692518101622, -1.6820689127531514, -0.9695976488703136, 2.1111909418218846, -1.1748622717446693, 0.036829999301685935, -2.546592388421744, 1.476986446395535, 3.1693383934366164, -1.9584244332708383, -4.373376581379906, 0.033797460905304756, 1.8621394179754447, 2.2410561559792597, 4.621696582436701, 0.6331029151810654, 0.18305873234285122, 5.512973990218274, 0.2524589700980262, 2.6668684268337204, 0.7823581119540546, 6.88247739151005, 3.931032541783369, 4.144767038059297, -1.5533148924511595, 3.520408959873252, 0.4762746980990844, 0.4789804011262072, 2.41362012821869, 1.6693787038653216, 2.467920222025199, -0.33449732461663373, 1.987902283531398, 4.263886221247841, 0.19939252030622717, 2.141987696111379, 6.431907178812033, 0.13439787262791664, 0.26218586535206057, 0.322159275230106, 2.349662403636506, 2.7248930800935565, 2.9501727294383473, 2.118338745661474, 0.5878282945197518, 1.1310379529302705, 3.7794878701766526, 3.385591897969908, -3.1373195017984266, 3.7803368683221636, 2.441011816490628, -6.704863379106446, 4.476138507502165, -8.743299050271993, -2.0319552670026266, 2.4773651749694303, 7.192807076337429, 0.08652825579098648, 3.673341003438897, 2.7521163465448626, 0.9504768970182368, 5.996082273142138, 3.508741687462452, 3.9321493557127076, 1.167851573533445, -4.877043635342229, 3.4172569231614545, -0.7828977574172437, 1.4110181673823998, 4.752262636748711, 3.2848473121300086, 0.3334428213115243, 0.5418641921095584, 0.3457379807456623, 0.0680234721804295, 1.6475786091515108, 1.8959414582461305, -0.05352626822785586, -0.9132928680813399, 3.11529258240314, 4.848305196146569, 2.083603084454303, 4.922767739548944, 6.704347304214029, 1.6558947921101155, 2.5258028727769606, -0.011835693060810034, 7.677931191773369, -0.9925456370025363, 6.91949172936841, -1.957418655704263, 0.3681599773258023, 0.7240132716431894, 1.053041496529976, -9.855407740297707, 1.7834408659614944, 7.589908798714797, 0.08803342701789248, 0.8685263265793811, 4.247862747293983, 2.0500994803085653, 0.49709933413030444, 0.8679188785070185, 7.556796496015737, 2.166523219956259, 0.05922284168633332, 0.7001808374669997, 0.44966788600339885, 3.5743300235141207, 1.706583433020165, 2.7701951030586516, 4.166922263982297, -1.5017372191555896, 4.272540015349936, 0.9551639549119962, 0.11263468201643774, 0.8874697808524159, 4.560186925637743, -0.4486206368050363, 0.016053523716026717, 0.10067685802418014, 6.147054480795776, 2.2256933480839503, -7.465692855024062, 1.611916087830354, -8.966622317552655, 2.490476244584635, 0.8141112097326945, 0.21577104958396978, 0.31037678526449214, 0.9070775790882156, 0.5215418857064149, 0.010277890402791373, 2.505537235721286, 1.1902649990612033, 1.9047207000887454, 2.4737865021291228, 5.378560096899305, 0.8819071407637588, 0.01828886697799898, 1.1082980382220131, 6.5800982736730695, 3.162440011556765, -0.8884922128012598, 3.6199626273846937, 0.6813084595861976, 4.888681595969397, 0.0708553871175572, 2.1046382704473685, 1.7243302906568811, -0.17761658218924234, 2.2132291834318276, 7.245805950080054, 1.3805398732803682, 0.4551466401278591, 0.8542509167271354, 0.9080292332811712, 0.7164911007541553, -0.5721805958743571, 4.266201071123258, 2.3635765645486346, -2.688292828287567, -1.1326558575848125, 3.2773552038397047, 5.036831202154345, 0.22473784208579756, 4.529087938834785, 2.720381918672497, 0.5912956150043677, 1.5102435888520866, -1.7376218315506042, 1.5814208965442271, 4.1284678593765785, 3.1300684745956096, 5.051546645535451, 2.2626998626107526, 2.149171295640964, 1.1271224574009657, 1.6042227069401245, 2.7079668053200514, -1.9676593782696419, 3.1978221051229436, -14.76508776906909, 0.856329517656547, 1.5795617037581755, 5.608110456685094, 0.8239063996180306, 6.284026319574287, 6.440107444657612, 4.3952156697246, 3.966084019102128, 0.6740941232756035, 1.8009580447816504, 2.140821229804217, 2.1286544324130605, 3.828401371280926, 0.7422770609112531, 2.4689168124087435]} diff --git a/base/special/xlogyf/test/test.js b/base/special/xlogyf/test/test.js new file mode 100644 index 000000000..047a31184 --- /dev/null +++ b/base/special/xlogyf/test/test.js @@ -0,0 +1,181 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF 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 isnanf = require( './../../../../base/assert/is-nanf' ); +var EPS = require( '@stdlib/constants/float32/eps' ); +var absf = require( './../../../../base/special/absf' ); +var float64ToFloat32 = require( '@stdlib/number/float64/base/to-float32' ); +var xlogyf = require( './../lib' ); + + +// FIXTURES // + +var smallSmall = require( './fixtures/python/small_small.json' ); +var smallLarge = require( './fixtures/python/small_large.json' ); +var largeSmall = require( './fixtures/python/large_small.json' ); +var largeLarge = require( './fixtures/python/large_large.json' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof xlogyf, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns `NaN` when provided `NaN` for any parameter', function test( t ) { + var out = xlogyf( NaN, 2.0 ); + t.strictEqual( isnanf( out ), true, 'returns expected value' ); + + out = xlogyf( 0.0, NaN ); + t.strictEqual( isnanf( out ), true, 'returns expected value' ); + + out = xlogyf( 3.4, NaN ); + t.strictEqual( isnanf( out ), true, 'returns expected value' ); + + out = xlogyf( NaN, NaN ); + t.strictEqual( isnanf( out ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function returns `0` when `x = 0` and `y` is a number', function test( t ) { + var out = xlogyf( 0.0, 2.0 ); + t.strictEqual( out, 0.0, 'returns expected value' ); + + out = xlogyf( 0.0, 0.0 ); + t.strictEqual( out, 0.0, 'returns expected value' ); + + out = xlogyf( 0.0, -3.0 ); + t.strictEqual( out, 0.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function evaluates `x * ln(y)` for small `x` and `y`', function test( t ) { + var expected; + var delta; + var out; + var tol; + var x; + var y; + var i; + var e; + + expected = smallSmall.expected; + x = smallSmall.x; + y = smallSmall.y; + for ( i = 0; i < x.length; i++ ) { + e = float64ToFloat32( expected[ i ] ); + out = xlogyf( x[ i ], y[ i ] ); + if ( out === e ) { + t.strictEqual( out, e, 'x: '+x[ i ]+', out: '+out+', expected: '+e ); + } else { + delta = absf( out - e ); + tol = 17.0 * EPS * absf( e ); + t.ok( delta <= tol, 'within tolerance. x: '+x[ i ]+'. v: '+out+'. E: '+e+' Δ: '+delta+'. tol: '+tol ); + } + } + t.end(); +}); + +tape( 'the function evaluates `x * ln(y)` for small `x` and large `y`', function test( t ) { + var expected; + var delta; + var out; + var tol; + var x; + var y; + var i; + var e; + + expected = smallLarge.expected; + x = smallLarge.x; + y = smallLarge.y; + for ( i = 0; i < x.length; i++ ) { + e = float64ToFloat32( expected[ i ] ); + out = xlogyf( x[ i ], y[ i ] ); + if ( out === e ) { + t.strictEqual( out, e, 'x: '+x[ i ]+', out: '+out+', expected: '+e ); + } else { + delta = absf( out - e ); + tol = 2.0 * EPS * absf( e ); + t.ok( delta <= tol, 'within tolerance. x: '+x[ i ]+'. v: '+out+'. E: '+e+' Δ: '+delta+'. tol: '+tol ); + } + } + t.end(); +}); + +tape( 'the function evaluates `x * ln(y)` for large `x` and small `y`', function test( t ) { + var expected; + var delta; + var out; + var tol; + var x; + var y; + var i; + var e; + + expected = largeSmall.expected; + x = largeSmall.x; + y = largeSmall.y; + for ( i = 0; i < x.length; i++ ) { + e = float64ToFloat32( expected[ i ] ); + out = xlogyf( x[ i ], y[ i ] ); + if ( out === e ) { + t.strictEqual( out, e, 'x: '+x[ i ]+', out: '+out+', expected: '+e ); + } else { + delta = absf( out - e ); + tol = 83.0 * EPS * absf( e ); + t.ok( delta <= tol, 'within tolerance. x: '+x[ i ]+'. v: '+out+'. E: '+e+' Δ: '+delta+'. tol: '+tol ); + } + } + t.end(); +}); + +tape( 'the function evaluates `x * ln(y)` for large `x` and `y`', function test( t ) { + var expected; + var delta; + var out; + var tol; + var x; + var y; + var i; + var e; + + expected = largeLarge.expected; + x = largeLarge.x; + y = largeLarge.y; + for ( i = 0; i < x.length; i++ ) { + e = float64ToFloat32( expected[ i ] ); + out = xlogyf( x[ i ], y[ i ] ); + if ( out === e ) { + t.strictEqual( out, e, 'x: '+x[ i ]+', out: '+out+', expected: '+e ); + } else { + delta = absf( out - e ); + tol = 2.0 * EPS * absf( e ); + t.ok( delta <= tol, 'within tolerance. x: '+x[ i ]+'. v: '+out+'. E: '+e+' Δ: '+delta+'. tol: '+tol ); + } + } + t.end(); +}); diff --git a/base/special/xlogyf/test/test.native.js b/base/special/xlogyf/test/test.native.js new file mode 100644 index 000000000..431200079 --- /dev/null +++ b/base/special/xlogyf/test/test.native.js @@ -0,0 +1,190 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF 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 isnanf = require( './../../../../base/assert/is-nanf' ); +var EPS = require( '@stdlib/constants/float32/eps' ); +var absf = require( './../../../../base/special/absf' ); +var float64ToFloat32 = require( '@stdlib/number/float64/base/to-float32' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// FIXTURES // + +var smallSmall = require( './fixtures/python/small_small.json' ); +var smallLarge = require( './fixtures/python/small_large.json' ); +var largeSmall = require( './fixtures/python/large_small.json' ); +var largeLarge = require( './fixtures/python/large_large.json' ); + + +// VARIABLES // + +var xlogyf = tryRequire( resolve( __dirname, './../lib/native.js' ) ); +var opts = { + 'skip': ( xlogyf instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof xlogyf, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns `NaN` when provided `NaN` for any parameter', opts, function test( t ) { + var out = xlogyf( NaN, 2.0 ); + t.strictEqual( isnanf( out ), true, 'returns expected value' ); + + out = xlogyf( 0.0, NaN ); + t.strictEqual( isnanf( out ), true, 'returns expected value' ); + + out = xlogyf( 3.4, NaN ); + t.strictEqual( isnanf( out ), true, 'returns expected value' ); + + out = xlogyf( NaN, NaN ); + t.strictEqual( isnanf( out ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function returns `0` when `x = 0` and `y` is a number', opts, function test( t ) { + var out = xlogyf( 0.0, 2.0 ); + t.strictEqual( out, 0.0, 'returns expected value' ); + + out = xlogyf( 0.0, 0.0 ); + t.strictEqual( out, 0.0, 'returns expected value' ); + + out = xlogyf( 0.0, -3.0 ); + t.strictEqual( out, 0.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function evaluates `x * ln(y)` for small `x` and `y`', opts, function test( t ) { + var expected; + var delta; + var out; + var tol; + var x; + var y; + var i; + var e; + + expected = smallSmall.expected; + x = smallSmall.x; + y = smallSmall.y; + for ( i = 0; i < x.length; i++ ) { + e = float64ToFloat32( expected[ i ] ); + out = xlogyf( x[ i ], y[ i ] ); + if ( out === e ) { + t.strictEqual( out, e, 'x: '+x[ i ]+', out: '+out+', expected: '+e ); + } else { + delta = absf( out - e ); + tol = 17.0 * EPS * absf( e ); + t.ok( delta <= tol, 'within tolerance. x: '+x[ i ]+'. v: '+out+'. E: '+e+' Δ: '+delta+'. tol: '+tol ); + } + } + t.end(); +}); + +tape( 'the function evaluates `x * ln(y)` for small `x` and large `y`', opts, function test( t ) { + var expected; + var delta; + var out; + var tol; + var x; + var y; + var i; + var e; + + expected = smallLarge.expected; + x = smallLarge.x; + y = smallLarge.y; + for ( i = 0; i < x.length; i++ ) { + e = float64ToFloat32( expected[ i ] ); + out = xlogyf( x[ i ], y[ i ] ); + if ( out === e ) { + t.strictEqual( out, e, 'x: '+x[ i ]+', out: '+out+', expected: '+e ); + } else { + delta = absf( out - e ); + tol = 2.0 * EPS * absf( e ); + t.ok( delta <= tol, 'within tolerance. x: '+x[ i ]+'. v: '+out+'. E: '+e+' Δ: '+delta+'. tol: '+tol ); + } + } + t.end(); +}); + +tape( 'the function evaluates `x * ln(y)` for large `x` and small `y`', opts, function test( t ) { + var expected; + var delta; + var out; + var tol; + var x; + var y; + var i; + var e; + + expected = largeSmall.expected; + x = largeSmall.x; + y = largeSmall.y; + for ( i = 0; i < x.length; i++ ) { + e = float64ToFloat32( expected[ i ] ); + out = xlogyf( x[ i ], y[ i ] ); + if ( out === e ) { + t.strictEqual( out, e, 'x: '+x[ i ]+', out: '+out+', expected: '+e ); + } else { + delta = absf( out - e ); + tol = 83.0 * EPS * absf( e ); + t.ok( delta <= tol, 'within tolerance. x: '+x[ i ]+'. v: '+out+'. E: '+e+' Δ: '+delta+'. tol: '+tol ); + } + } + t.end(); +}); + +tape( 'the function evaluates `x * ln(y)` for large `x` and `y`', opts, function test( t ) { + var expected; + var delta; + var out; + var tol; + var x; + var y; + var i; + var e; + + expected = largeLarge.expected; + x = largeLarge.x; + y = largeLarge.y; + for ( i = 0; i < x.length; i++ ) { + e = float64ToFloat32( expected[ i ] ); + out = xlogyf( x[ i ], y[ i ] ); + if ( out === e ) { + t.strictEqual( out, e, 'x: '+x[ i ]+', out: '+out+', expected: '+e ); + } else { + delta = absf( out - e ); + tol = 2.0 * EPS * absf( e ); + t.ok( delta <= tol, 'within tolerance. x: '+x[ i ]+'. v: '+out+'. E: '+e+' Δ: '+delta+'. tol: '+tol ); + } + } + t.end(); +});