diff --git a/lib/node_modules/@stdlib/math/base/special/gammasgnf/README.md b/lib/node_modules/@stdlib/math/base/special/gammasgnf/README.md new file mode 100644 index 000000000000..eb8c7fffad68 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/gammasgnf/README.md @@ -0,0 +1,217 @@ + + +# gammasgnf + +> Sign of the [gamma function][@stdlib/math/base/special/gamma] for a single-precision floating-point number. + +
+ +The sign of the [gamma-function][@stdlib/math/base/special/gamma] is defined as + + + +```math +\mathop{\mathrm{gammasgn}} ( x ) = \begin{cases} 1 & \textrm{if}\ \Gamma > 0 \\ -1 & \textrm{if}\ \Gamma < 0 \\ 0 & \textrm{otherwise}\ \end{cases} +``` + + + +The [gamma function][@stdlib/math/base/special/gamma] can be computed as the product of `gammasgn(x)` and `exp(gammaln(x))`. + +
+ + + +
+ +## Usage + +```javascript +var gammasgnf = require( '@stdlib/math/base/special/gammasgnf' ); +``` + +#### gammasgnf( x ) + +Computes the sign of the [gamma function][@stdlib/math/base/special/gamma] for a single-precision floating-point number. + +```javascript +var v = gammasgnf( 1.0 ); +// returns 1.0 + +v = gammasgnf( -2.5 ); +// returns -1.0 + +v = gammasgnf( 0.0 ); +// returns 0.0 + +v = gammasgnf( NaN ); +// returns NaN +``` + +
+ + + +
+ +## Notes + +- The [gamma function][@stdlib/math/base/special/gamma] is not defined for negative integer values (i.e., `gamma(x) === NaN` when `x` is a negative integer). The [natural logarithm of the gamma function][@stdlib/math/base/special/gammaln] is defined for negative integer values (i.e., `gammaln(x) === Infinity` when `x` is a negative integer). Accordingly, in order for the equality `gamma(x) === gammasgn(x) * exp(gammaln(x))` to hold (i.e., return `NaN`), `gammasgn` needs to either return `NaN` or `0`. By convention, this function returns `0`. + +
+ + + +
+ +## Examples + + + +```javascript +var logEachMap = require( '@stdlib/console/log-each-map' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var gammasgnf = require( '@stdlib/math/base/special/gammasgnf' ); + +var x = uniform( 100, -10.0, 10.0, { + 'dtype': 'float32' +}); + +logEachMap( 'x: %0.4f, f(x): %0.4f', x, gammasgnf ); +``` + +
+ + + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/math/base/special/gammasgnf.h" +``` + +#### stdlib_base_gammasgnf( x ) + +Computes the sign of the [gamma function][@stdlib/math/base/special/gamma] for a single-precision floating-point number. + +```c +float out = stdlib_base_gammasgnf( 1.0f ); +// returns 1.0f + +out = stdlib_base_gammasgnf( -2.5f ); +// returns -1.0f +``` + +The function accepts the following arguments: + +- **x**: `[in] float` input value. + +```c +float stdlib_base_gammasgnf( const float x ); +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/math/base/special/gammasgnf.h" +#include +#include + +int main( void ) { + float x; + float v; + int i; + + for ( i = 0; i < 100; i++ ) { + x = ( (float)rand() / (float)RAND_MAX ) * 100.0f; + v = stdlib_base_gammasgnf( x ); + printf( "gammasgnf(%f) = %f\n", x, v ); + } +} +``` + +
+ + + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/math/base/special/gammasgnf/benchmark/benchmark.js b/lib/node_modules/@stdlib/math/base/special/gammasgnf/benchmark/benchmark.js new file mode 100644 index 000000000000..8f2cda56c6c4 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/gammasgnf/benchmark/benchmark.js @@ -0,0 +1,54 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pkg = require( './../package.json' ).name; +var gammasgnf = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var x; + var y; + var i; + + x = uniform( 100, -10.0, 10.0, { + 'dtype': 'float32' + }); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = gammasgnf( x[ i%x.length ] ); + if ( isnanf( y ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( y ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/math/base/special/gammasgnf/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/math/base/special/gammasgnf/benchmark/benchmark.native.js new file mode 100644 index 000000000000..7293ef2d59b4 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/gammasgnf/benchmark/benchmark.native.js @@ -0,0 +1,63 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var gammasgnf = tryRequire( resolve( __dirname, './../lib/native.js' ) ); +var opts = { + 'skip': ( gammasgnf instanceof Error ) +}; + + +// MAIN // + +bench( pkg+'::native', opts, function benchmark( b ) { + var x; + var y; + var i; + + x = uniform( 100, -10.0, 10.0, { + 'dtype': 'float32' + }); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = gammasgnf( x[ i%x.length ] ); + if ( isnanf( y ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( y ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/math/base/special/gammasgnf/benchmark/c/native/Makefile b/lib/node_modules/@stdlib/math/base/special/gammasgnf/benchmark/c/native/Makefile new file mode 100644 index 000000000000..a4bd7b38fd74 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/gammasgnf/benchmark/c/native/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2025 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := benchmark.out + + +# RULES # + +#/ +# Compiles source files. +# +# @param {string} [C_COMPILER] - C compiler (e.g., `gcc`) +# @param {string} [CFLAGS] - C compiler options +# @param {(string|void)} [fPIC] - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} [INCLUDE] - list of includes (e.g., `-I /foo/bar -I /beep/boop/include`) +# @param {string} [SOURCE_FILES] - list of source files +# @param {string} [LIBPATH] - list of library paths (e.g., `-L /foo/bar -L /beep/boop`) +# @param {string} [LIBRARIES] - list of libraries (e.g., `-lopenblas -lpthread`) +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler (e.g., `gcc`) +# @param {string} CFLAGS - C compiler options +# @param {(string|void)} fPIC - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} INCLUDE - list of includes (e.g., `-I /foo/bar`) +# @param {string} SOURCE_FILES - list of source files +# @param {string} LIBPATH - list of library paths (e.g., `-L /foo/bar`) +# @param {string} LIBRARIES - list of libraries (e.g., `-lopenblas`) +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) $(fPIC) $(INCLUDE) -o $@ $(SOURCE_FILES) $< $(LIBPATH) -lm $(LIBRARIES) + +#/ +# Runs compiled benchmarks. +# +# @example +# make run +#/ +run: $(c_targets) + $(QUIET) ./$< + +.PHONY: run + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/math/base/special/gammasgnf/benchmark/c/native/benchmark.c b/lib/node_modules/@stdlib/math/base/special/gammasgnf/benchmark/c/native/benchmark.c new file mode 100644 index 000000000000..65072dc80e1f --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/gammasgnf/benchmark/c/native/benchmark.c @@ -0,0 +1,136 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT 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/gammasgnf.h" +#include +#include +#include +#include +#include + +#define NAME "gammasgnf" +#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 x[ 100 ]; + double t; + float y; + int i; + + for ( i = 0; i < 100; i++ ) { + x[ i ] = ( 100.0f * rand_float() ) - 50.0f; + } + + t = tic(); + for ( i = 0; i < ITERATIONS; i++ ) { + y = stdlib_base_gammasgnf( x[ i%100 ] ); + if ( y != y ) { + printf( "should not return NaN\n" ); + break; + } + } + elapsed = tic() - t; + if ( y != y ) { + printf( "should not return NaN\n" ); + } + return elapsed; +} + +/** +* Main execution sequence. +*/ +int main( void ) { + double elapsed; + int i; + + // Use the current time to seed the random number generator: + srand( time( NULL ) ); + + print_version(); + for ( i = 0; i < REPEATS; i++ ) { + printf( "# c::native::%s\n", NAME ); + elapsed = benchmark(); + print_results( elapsed ); + printf( "ok %d benchmark finished\n", i+1 ); + } + print_summary( REPEATS, REPEATS ); +} diff --git a/lib/node_modules/@stdlib/math/base/special/gammasgnf/benchmark/python/scipy/benchmark.py b/lib/node_modules/@stdlib/math/base/special/gammasgnf/benchmark/python/scipy/benchmark.py new file mode 100644 index 000000000000..4b8ec7228339 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/gammasgnf/benchmark/python/scipy/benchmark.py @@ -0,0 +1,97 @@ +#!/usr/bin/env python +# +# @license Apache-2.0 +# +# Copyright (c) 2025 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Benchmark scipy.special.gammasgn.""" + +from __future__ import print_function +import timeit + +NAME = "gammasgnf" +REPEATS = 3 +ITERATIONS = 1000000 + + +def print_version(): + """Print the TAP version.""" + print("TAP version 13") + + +def print_summary(total, passing): + """Print the benchmark summary. + + # Arguments + + * `total`: total number of tests + * `passing`: number of passing tests + + """ + print("#") + print("1.." + str(total)) # TAP plan + print("# total " + str(total)) + print("# pass " + str(passing)) + print("#") + print("# ok") + + +def print_results(elapsed): + """Print benchmark results. + + # Arguments + + * `elapsed`: elapsed time (in seconds) + + # Examples + + ``` python + python> print_results(0.131009101868) + ``` + """ + rate = ITERATIONS / elapsed + + print(" ---") + print(" iterations: " + str(ITERATIONS)) + print(" elapsed: " + str(elapsed)) + print(" rate: " + str(rate)) + print(" ...") + + +def benchmark(): + """Run the benchmark and print benchmark results.""" + setup = "from scipy.special import gammasgn; from random import random; import numpy as np;" + stmt = "y = gammasgn(np.float32(100.0*random()))" + + t = timeit.Timer(stmt, setup=setup) + + print_version() + + for i in range(REPEATS): + print("# python::scipy::" + NAME) + elapsed = t.timeit(number=ITERATIONS) + print_results(elapsed) + print("ok " + str(i+1) + " benchmark finished") + + print_summary(REPEATS, REPEATS) + + +def main(): + """Run the benchmark.""" + benchmark() + + +if __name__ == "__main__": + main() diff --git a/lib/node_modules/@stdlib/math/base/special/gammasgnf/binding.gyp b/lib/node_modules/@stdlib/math/base/special/gammasgnf/binding.gyp new file mode 100644 index 000000000000..68a1ca11d160 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/gammasgnf/binding.gyp @@ -0,0 +1,170 @@ +# @license Apache-2.0 +# +# Copyright (c) 2025 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A `.gyp` file for building a Node.js native add-on. +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # List of files to include in this file: + 'includes': [ + './include.gypi', + ], + + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Target name should match the add-on export name: + 'addon_target_name%': 'addon', + + # Set variables based on the host OS: + 'conditions': [ + [ + 'OS=="win"', + { + # Define the object file suffix: + 'obj': 'obj', + }, + { + # Define the object file suffix: + 'obj': 'o', + } + ], # end condition (OS=="win") + ], # end conditions + }, # end variables + + # Define compile targets: + 'targets': [ + + # Target to generate an add-on: + { + # The target name should match the add-on export name: + 'target_name': '<(addon_target_name)', + + # Define dependencies: + 'dependencies': [], + + # Define directories which contain relevant include headers: + 'include_dirs': [ + # Local include directory: + '<@(include_dirs)', + ], + + # List of source files: + 'sources': [ + '<@(src_files)', + ], + + # Settings which should be applied when a target's object files are used as linker input: + 'link_settings': { + # Define libraries: + 'libraries': [ + '<@(libraries)', + ], + + # Define library directories: + 'library_dirs': [ + '<@(library_dirs)', + ], + }, + + # C/C++ compiler flags: + 'cflags': [ + # Enable commonly used warning options: + '-Wall', + + # Aggressive optimization: + '-O3', + ], + + # C specific compiler flags: + 'cflags_c': [ + # Specify the C standard to which a program is expected to conform: + '-std=c99', + ], + + # C++ specific compiler flags: + 'cflags_cpp': [ + # Specify the C++ standard to which a program is expected to conform: + '-std=c++11', + ], + + # Linker flags: + 'ldflags': [], + + # Apply conditions based on the host OS: + 'conditions': [ + [ + 'OS=="mac"', + { + # Linker flags: + 'ldflags': [ + '-undefined dynamic_lookup', + '-Wl,-no-pie', + '-Wl,-search_paths_first', + ], + }, + ], # end condition (OS=="mac") + [ + 'OS!="win"', + { + # C/C++ flags: + 'cflags': [ + # Generate platform-independent code: + '-fPIC', + ], + }, + ], # end condition (OS!="win") + ], # end conditions + }, # end target <(addon_target_name) + + # Target to copy a generated add-on to a standard location: + { + 'target_name': 'copy_addon', + + # Declare that the output of this target is not linked: + 'type': 'none', + + # Define dependencies: + 'dependencies': [ + # Require that the add-on be generated before building this target: + '<(addon_target_name)', + ], + + # Define a list of actions: + 'actions': [ + { + 'action_name': 'copy_addon', + 'message': 'Copying addon...', + + # Explicitly list the inputs in the command-line invocation below: + 'inputs': [], + + # Declare the expected outputs: + 'outputs': [ + '<(addon_output_dir)/<(addon_target_name).node', + ], + + # Define the command-line invocation: + 'action': [ + 'cp', + '<(PRODUCT_DIR)/<(addon_target_name).node', + '<(addon_output_dir)/<(addon_target_name).node', + ], + }, + ], # end actions + }, # end target copy_addon + ], # end targets +} diff --git a/lib/node_modules/@stdlib/math/base/special/gammasgnf/docs/repl.txt b/lib/node_modules/@stdlib/math/base/special/gammasgnf/docs/repl.txt new file mode 100644 index 000000000000..d8f089e2ae25 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/gammasgnf/docs/repl.txt @@ -0,0 +1,28 @@ + +{{alias}}( x ) + Computes the sign of the gamma function for a single-precision + floating-point number. + + Parameters + ---------- + x: number + Input value. + + Returns + ------- + y: number + Sign of the gamma function. + + Examples + -------- + > var y = {{alias}}( 1.0 ) + 1.0 + > y = {{alias}}( -2.5 ) + -1.0 + > y = {{alias}}( 0.0 ) + 0.0 + > y = {{alias}}( NaN ) + NaN + + See Also + -------- diff --git a/lib/node_modules/@stdlib/math/base/special/gammasgnf/docs/types/index.d.ts b/lib/node_modules/@stdlib/math/base/special/gammasgnf/docs/types/index.d.ts new file mode 100644 index 000000000000..5ee4d8d1cfb0 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/gammasgnf/docs/types/index.d.ts @@ -0,0 +1,48 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT 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 the sign of the gamma function for a single-precision floating-point number. +* +* @param x - input value +* @returns sign of the gamma function +* +* @example +* var v = gammasgnf( 1.0 ); +* // returns 1.0 +* +* @example +* var v = gammasgnf( -2.5 ); +* // returns -1.0 +* +* @example +* var v = gammasgnf( 0.0 ); +* // returns 0.0 +* +* @example +* var v = gammasgnf( NaN ); +* // returns NaN +*/ +declare function gammasgnf( x: number ): number; + + +// EXPORTS // + +export = gammasgnf; diff --git a/lib/node_modules/@stdlib/math/base/special/gammasgnf/docs/types/test.ts b/lib/node_modules/@stdlib/math/base/special/gammasgnf/docs/types/test.ts new file mode 100644 index 000000000000..687583006cfc --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/gammasgnf/docs/types/test.ts @@ -0,0 +1,44 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT 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 gammasgnf = require( './index' ); + + +// TESTS // + +// The function returns a number... +{ + gammasgnf( 2 ); // $ExpectType number +} + +// The compiler throws an error if the function is provided a value other than a number... +{ + gammasgnf( true ); // $ExpectError + gammasgnf( false ); // $ExpectError + gammasgnf( null ); // $ExpectError + gammasgnf( undefined ); // $ExpectError + gammasgnf( '5' ); // $ExpectError + gammasgnf( [] ); // $ExpectError + gammasgnf( {} ); // $ExpectError + gammasgnf( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided insufficient arguments... +{ + gammasgnf(); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/math/base/special/gammasgnf/examples/c/Makefile b/lib/node_modules/@stdlib/math/base/special/gammasgnf/examples/c/Makefile new file mode 100644 index 000000000000..25ced822f96a --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/gammasgnf/examples/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2025 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := example.out + + +# RULES # + +#/ +# Compiles source files. +# +# @param {string} [C_COMPILER] - C compiler (e.g., `gcc`) +# @param {string} [CFLAGS] - C compiler options +# @param {(string|void)} [fPIC] - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} [INCLUDE] - list of includes (e.g., `-I /foo/bar -I /beep/boop/include`) +# @param {string} [SOURCE_FILES] - list of source files +# @param {string} [LIBPATH] - list of library paths (e.g., `-L /foo/bar -L /beep/boop`) +# @param {string} [LIBRARIES] - list of libraries (e.g., `-lopenblas -lpthread`) +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler (e.g., `gcc`) +# @param {string} CFLAGS - C compiler options +# @param {(string|void)} fPIC - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} INCLUDE - list of includes (e.g., `-I /foo/bar`) +# @param {string} SOURCE_FILES - list of source files +# @param {string} LIBPATH - list of library paths (e.g., `-L /foo/bar`) +# @param {string} LIBRARIES - list of libraries (e.g., `-lopenblas`) +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) $(fPIC) $(INCLUDE) -o $@ $(SOURCE_FILES) $< $(LIBPATH) -lm $(LIBRARIES) + +#/ +# Runs compiled examples. +# +# @example +# make run +#/ +run: $(c_targets) + $(QUIET) ./$< + +.PHONY: run + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/math/base/special/gammasgnf/examples/c/example.c b/lib/node_modules/@stdlib/math/base/special/gammasgnf/examples/c/example.c new file mode 100644 index 000000000000..1a67b6add0a4 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/gammasgnf/examples/c/example.c @@ -0,0 +1,33 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT 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/gammasgnf.h" +#include +#include + +int main( void ) { + float x; + float v; + int i; + + for ( i = 0; i < 100; i++ ) { + x = ( (float)rand() / (float)RAND_MAX ) * 100.0f; + v = stdlib_base_gammasgnf( x ); + printf( "gammasgnf(%f) = %f\n", x, v ); + } +} diff --git a/lib/node_modules/@stdlib/math/base/special/gammasgnf/examples/index.js b/lib/node_modules/@stdlib/math/base/special/gammasgnf/examples/index.js new file mode 100644 index 000000000000..f2cf230d4ef1 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/gammasgnf/examples/index.js @@ -0,0 +1,29 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR 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 logEachMap = require( '@stdlib/console/log-each-map' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var gammasgnf = require( './../lib' ); + +var x = uniform( 100, -10.0, 10.0, { + 'dtype': 'float32' +}); + +logEachMap( 'x: %0.4f, f(x): %0.4f', x, gammasgnf ); diff --git a/lib/node_modules/@stdlib/math/base/special/gammasgnf/include.gypi b/lib/node_modules/@stdlib/math/base/special/gammasgnf/include.gypi new file mode 100644 index 000000000000..ecfaf82a3279 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/gammasgnf/include.gypi @@ -0,0 +1,53 @@ +# @license Apache-2.0 +# +# Copyright (c) 2025 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT 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.0 ) { + return 1.0; + } + fx = floorf( x ); + if ( x === fx ) { + return 0.0; + } + fx = float64ToFloat32( fx / 2.0 ); + if ( fx === floorf( fx ) ) { + return 1.0; + } + return -1.0; +} + + +// EXPORTS // + +module.exports = gammasgnf; diff --git a/lib/node_modules/@stdlib/math/base/special/gammasgnf/lib/native.js b/lib/node_modules/@stdlib/math/base/special/gammasgnf/lib/native.js new file mode 100644 index 000000000000..61bf9f10576b --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/gammasgnf/lib/native.js @@ -0,0 +1,55 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Computes the sign of the gamma function for a single-precision floating-point number. +* +* @private +* @param {number} x - input value +* @returns {number} sign of the gamma function +* +* @example +* var v = gammasgnf( 1.0 ); +* // returns 1.0 +* +* v = gammasgnf( -2.5 ); +* // returns -1.0 +* +* v = gammasgnf( 0.0 ); +* // returns 0.0 +* +* v = gammasgnf( NaN ); +* // returns NaN +*/ +function gammasgnf( x ) { + return addon( x ); +} + + +// EXPORTS // + +module.exports = gammasgnf; diff --git a/lib/node_modules/@stdlib/math/base/special/gammasgnf/manifest.json b/lib/node_modules/@stdlib/math/base/special/gammasgnf/manifest.json new file mode 100644 index 000000000000..372625b547c4 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/gammasgnf/manifest.json @@ -0,0 +1,75 @@ +{ + "options": { + "task": "build" + }, + "fields": [ + { + "field": "src", + "resolve": true, + "relative": true + }, + { + "field": "include", + "resolve": true, + "relative": true + }, + { + "field": "libraries", + "resolve": false, + "relative": false + }, + { + "field": "libpath", + "resolve": true, + "relative": false + } + ], + "confs": [ + { + "task": "build", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/math/base/napi/unary", + "@stdlib/math/base/assert/is-nanf", + "@stdlib/math/base/special/floorf" + ] + }, + { + "task": "benchmark", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/math/base/assert/is-nanf", + "@stdlib/math/base/special/floorf" + ] + }, + { + "task": "examples", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/math/base/assert/is-nanf", + "@stdlib/math/base/special/floorf" + ] + } + ] +} diff --git a/lib/node_modules/@stdlib/math/base/special/gammasgnf/package.json b/lib/node_modules/@stdlib/math/base/special/gammasgnf/package.json new file mode 100644 index 000000000000..6b96f7efa96e --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/gammasgnf/package.json @@ -0,0 +1,67 @@ +{ + "name": "@stdlib/math/base/special/gammasgnf", + "version": "0.0.0", + "description": "Computes the sign of the gamma function for a single-precision floating-point number.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "gypfile": true, + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "include": "./include", + "lib": "./lib", + "src": "./src", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "special function", + "special", + "function", + "gamma", + "float32", + "sign", + "number" + ] +} diff --git a/lib/node_modules/@stdlib/math/base/special/gammasgnf/src/Makefile b/lib/node_modules/@stdlib/math/base/special/gammasgnf/src/Makefile new file mode 100644 index 000000000000..7733b6180cb4 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/gammasgnf/src/Makefile @@ -0,0 +1,70 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2025 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + + +# RULES # + +#/ +# Removes generated files for building an add-on. +# +# @example +# make clean-addon +#/ +clean-addon: + $(QUIET) -rm -f *.o *.node + +.PHONY: clean-addon + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: clean-addon + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/math/base/special/gammasgnf/src/addon.c b/lib/node_modules/@stdlib/math/base/special/gammasgnf/src/addon.c new file mode 100644 index 000000000000..2672daf083b8 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/gammasgnf/src/addon.c @@ -0,0 +1,22 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT 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/gammasgnf.h" +#include "stdlib/math/base/napi/unary.h" + +STDLIB_MATH_BASE_NAPI_MODULE_F_F( stdlib_base_gammasgnf ) diff --git a/lib/node_modules/@stdlib/math/base/special/gammasgnf/src/main.c b/lib/node_modules/@stdlib/math/base/special/gammasgnf/src/main.c new file mode 100644 index 000000000000..f4ff0408f3b1 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/gammasgnf/src/main.c @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT 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/gammasgnf.h" +#include "stdlib/math/base/assert/is_nanf.h" +#include "stdlib/math/base/special/floorf.h" + +/** +* Computes the sign of the gamma function for a single-precision floating-point number. +* +* @param x number +* @return sign of the gamma function +* +* @example +* float v = stdlib_base_gammasgnf( 1.0f ); +* // returns 1.0f +*/ +float stdlib_base_gammasgnf( const float x ) { + float fx; + + if ( stdlib_base_is_nanf( x ) ) { + return 0.0f / 0.0f; // NaN + } + if ( x > 0.0f ) { + return 1.0f; + } + fx = stdlib_base_floorf( x ); + if ( x == fx ) { + return 0.0f; + } + fx /= 2.0f; + if ( fx == stdlib_base_floorf( fx ) ) { + return 1.0f; + } + return -1.0f; +} diff --git a/lib/node_modules/@stdlib/math/base/special/gammasgnf/test/fixtures/python/data.json b/lib/node_modules/@stdlib/math/base/special/gammasgnf/test/fixtures/python/data.json new file mode 100644 index 000000000000..e04242523470 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/gammasgnf/test/fixtures/python/data.json @@ -0,0 +1 @@ +{"x": [72.29377746582031, -484.18048095703125, 452.5222473144531, 580.3936767578125, 368.4444274902344, 378.9513244628906, -276.0083923339844, 943.3155517578125, 177.79531860351562, 966.3272705078125, 386.53277587890625, -809.6299438476562, 854.3905029296875, -775.8443603515625, 444.7872619628906, 756.4056396484375, 833.7479858398438, 897.5510864257812, 968.3085327148438, 488.3846130371094, -120.3249282836914, 298.366943359375, -651.0611572265625, -566.3665161132812, 227.88470458984375, -223.18922424316406, -630.5233154296875, 675.0587768554688, 920.6935424804688, -418.6266174316406, 483.719482421875, -242.90924072265625, -999.3721313476562, -932.8941040039062, -398.9837646484375, -503.795166015625, -68.22515106201172, -400.4518737792969, -474.8246765136719, -49.81031036376953, -688.0718383789062, 596.8626708984375, 278.0148620605469, 923.8255004882812, 718.8834228515625, -681.5597534179688, 446.534912109375, 178.1630401611328, -214.63302612304688, -394.943359375, 343.4424743652344, 591.625244140625, -677.9346923828125, -35.731380462646484, 601.8646850585938, -403.6531982421875, -847.482177734375, 498.9290771484375, 271.7791442871094, -517.0999145507812, 631.1029663085938, 248.1778564453125, -368.2844543457031, -95.2524642944336, -662.8087158203125, -124.93384552001953, -370.8474426269531, -203.0970458984375, 719.1597900390625, -163.23109436035156, 714.67236328125, -237.8204803466797, -96.39997863769531, -333.1002502441406, 593.6065063476562, -466.5657958984375, 476.3220520019531, -467.7000427246094, -846.673095703125, 740.322021484375, -274.3287353515625, -585.0113525390625, -337.43084716796875, -668.1766967773438, -128.46002197265625, -191.42832946777344, -913.3319702148438, -8.833503723144531, -907.2333374023438, 608.9613647460938, 837.1180419921875, 646.7387084960938, -811.4189453125, 236.63670349121094, -230.1661834716797, -242.94509887695312, 406.2327880859375, 657.0618286132812, 476.326904296875, -549.888427734375, 299.18670654296875, -681.7986450195312, -396.4096374511719, 671.2528686523438, -31.268903732299805, 126.84419250488281, -263.1190185546875, -605.6387939453125, -40.055355072021484, -450.91217041015625, 74.63361358642578, -167.09156799316406, 408.0333557128906, -80.54705810546875, 520.516357421875, -966.7116088867188, 836.3079223632812, 602.839599609375, 515.4225463867188, 31.783536911010742, 831.231201171875, 292.1596374511719, -465.19036865234375, 412.6718444824219, 751.4171142578125, 527.5263671875, 770.2613525390625, 517.5586547851562, -634.5345458984375, -887.4003295898438, 317.13189697265625, -384.9481201171875, 677.3084716796875, -170.83238220214844, -573.3214111328125, -536.414306640625, 45.778236389160156, -828.2545776367188, 90.86827087402344, 501.6543884277344, 565.2053833007812, 713.876708984375, -134.21522521972656, -467.7892150878906, -426.69671630859375, -121.5662841796875, 202.7205047607422, -404.8239440917969, -613.8077392578125, 702.09814453125, -900.8501586914062, -169.18798828125, 6.363746166229248, -349.8936462402344, -411.5010681152344, 326.983154296875, 142.48208618164062, -734.4075317382812, -273.3197326660156, 440.339599609375, -322.9599304199219, 840.0345458984375, -8.736483573913574, -581.4151000976562, 933.3333740234375, -676.8203735351562, 414.3088684082031, 241.31170654296875, -535.81982421875, -690.8468627929688, -174.22340393066406, -202.01547241210938, -449.96002197265625, -358.57666015625, -39.88526916503906, -838.416259765625, -406.2785339355469, -622.7892456054688, -585.1996459960938, 615.9259643554688, -298.44769287109375, -162.03941345214844, 874.2413940429688, 173.21592712402344, 743.522705078125, -66.2969970703125, 9.810027122497559, -499.5106506347656, -536.1304931640625, -625.5429077148438, 684.7415771484375, 907.105712890625, -368.7273864746094, 850.7950439453125, 520.8414306640625, -733.472900390625, -684.8447875976562, -107.38013458251953, -113.04922485351562, -13.207489967346191, 378.7339172363281, 173.61973571777344, 243.55271911621094, 58.418663024902344, 702.7910766601562, -607.7839965820312, -486.3902893066406, 356.5520324707031, 222.85394287109375, -612.2464599609375, 238.68472290039062, -423.71124267578125, 385.25787353515625, -429.9082336425781, -183.47100830078125, -154.20086669921875, 156.44256591796875, -897.8140258789062, 888.0545654296875, 446.7154541015625, -289.54937744140625, -433.2946472167969, -766.4097290039062, 338.65277099609375, -389.6372375488281, 315.9469909667969, 944.8692016601562, -276.62237548828125, -950.241943359375, 907.534423828125, -494.0437316894531, -18.328777313232422, 551.378173828125, 924.8985595703125, -105.88140869140625, 726.735107421875, -199.26206970214844, 76.71273040771484, 568.914306640625, -13.277915000915527, -710.85400390625, 863.1930541992188, -692.9472045898438, 775.6744384765625, -461.26678466796875, -477.78485107421875, 943.8463745117188, -823.1491088867188, 95.96175384521484, -319.7314758300781, -194.76271057128906, -758.4373779296875, -530.8407592773438, 222.46231079101562, -750.0477294921875, 476.5159606933594, 702.9230346679688, -411.4799499511719, -801.2835083007812, 623.92333984375, -946.3247680664062, -788.4285278320312, -549.2515258789062, -820.6082153320312, -188.1250457763672, -409.57501220703125, -517.2744140625, 176.15597534179688, -784.3190307617188, 184.98463439941406, 650.1377563476562, 27.080921173095703, -223.78860473632812, 947.8356323242188, 246.29200744628906, -155.6345672607422, -713.223876953125, 328.7467956542969, 379.6930847167969, -242.84364318847656, -474.0014953613281, -965.6920776367188, -697.6097412109375, -711.0728149414062, 391.783447265625, -91.45881652832031, -2.7208588123321533, 922.04248046875, -209.20201110839844, 232.29251098632812, 644.4268798828125, -90.4534683227539, -378.30914306640625, -934.9337158203125, 496.4508056640625, -647.4013671875, -622.5133666992188, -795.0546264648438, -838.3882446289062, -624.4589233398438, -552.7896118164062, 688.4901123046875, 180.13690185546875, 698.5650634765625, -451.7039794921875, 254.0948028564453, -21.132463455200195, -689.0914916992188, -322.853515625, 197.89552307128906, -398.45013427734375, -639.5960693359375, -902.6832885742188, 652.3782348632812, 297.1004638671875, 907.4465942382812, -870.4163818359375, 63.28615951538086, -13.329643249511719, 26.231189727783203, -653.4733276367188, 538.0535888671875, -967.7496948242188, -893.2936401367188, 213.18109130859375, -913.7017211914062, 738.308837890625, 462.3212890625, 114.77305603027344, -156.82916259765625, 160.80287170410156, -935.6455078125, -736.4269409179688, 465.9970397949219, -549.1466674804688, -284.92529296875, 761.58544921875, 327.79833984375, 86.43036651611328, -519.7005615234375, 981.93017578125, 765.9191284179688, 591.0704956054688, 725.4246826171875, -942.6087036132812, 142.90269470214844, 854.3568115234375, -684.1726684570312, -303.6083068847656, -695.4532470703125, -641.6201782226562, -661.2364501953125, -778.544189453125, 243.5174102783203, 454.9570617675781, 176.09616088867188, -275.524658203125, 297.4345703125, -802.3382568359375, 270.96466064453125, 955.1365356445312, -289.83099365234375, -711.3375854492188, -719.90673828125, -394.0475158691406, -473.4023742675781, 816.4764404296875, 954.0294189453125, -359.9324951171875, -961.1061401367188, 463.4216003417969, 494.0787353515625, -750.023193359375, 185.3292236328125, -556.5742797851562, 772.256103515625, -306.6552734375, -54.64809799194336, 714.8546142578125, -404.8541259765625, 609.3231201171875, 947.0654907226562, -227.86720275878906, -918.17041015625, -552.415771484375, 158.5086669921875, 704.1487426757812, -186.8459930419922, 201.24794006347656, 429.0339050292969, 841.6784057617188, 996.7178955078125, 603.74609375, 718.9014892578125, -598.3526000976562, 615.0592651367188, 997.29833984375, 512.4532470703125, 202.85328674316406, -933.5529174804688, -59.07998275756836, -907.8305053710938, -506.0480651855469, 879.6891479492188, 664.4968872070312, -551.6798095703125, 66.61318969726562, 872.1036376953125, -565.74658203125, -298.1781921386719, 52.10894775390625, 35.33345031738281, -46.65753936767578, 617.0673828125, -325.92431640625, -127.61227416992188, 756.47705078125, 239.95346069335938, 107.94375610351562, -512.9043579101562, 419.2963562011719, 870.3699340820312, -280.19268798828125, 613.9686889648438, 724.0096435546875, -488.5963439941406, -692.1640014648438, 129.36312866210938, 541.7753295898438, -79.81008911132812, 270.52471923828125, 244.57872009277344, 14.96379566192627, 902.4185180664062, -56.80952835083008, -87.57335662841797, -778.5859985351562, 349.39373779296875, 983.3270263671875, 961.2786865234375, 951.62548828125, -651.434326171875, 343.75079345703125, 117.68828582763672, 672.1768798828125, -548.375732421875, -371.2475280761719, -721.41748046875, 718.4463500976562, 982.5022583007812, -273.8786926269531, 703.8501586914062, -101.99851989746094, 573.6386108398438, -906.5811767578125, 249.2582244873047, 579.6746215820312, -575.5367431640625, 954.2888793945312, 838.2554321289062, -172.3627471923828, 294.3403625488281, 584.9306640625, -796.2713012695312, 729.9786987304688, 893.2426147460938, -527.0245971679688, 963.9666137695312, 473.2046813964844, -498.2106018066406, 374.781494140625, -391.8468933105469, 518.6209106445312, 816.5471801757812, -327.6571350097656, 827.0474853515625, -564.9116821289062, 980.3704833984375, -906.8628540039062, 496.19952392578125, -298.92889404296875, -627.3275146484375, 545.0101928710938, 248.02178955078125, 715.7183837890625, 623.37158203125, 222.37278747558594, -758.5211791992188, -775.3140869140625, -433.3201599121094, -499.60003662109375, -211.09762573242188, -456.4058837890625, -14.599064826965332, 139.77789306640625, 611.46875, -139.65890502929688, 457.4771728515625, -821.7105102539062, 593.9929809570312, 288.8363037109375, -129.5935821533203, -102.77448272705078, 801.9006958007812, 925.5357666015625, -761.9022827148438, -449.16888427734375, -690.9921875, 75.33924102783203, -227.5210418701172, -414.8445129394531, 513.9676513671875, 968.1488647460938, 41.5684700012207, -616.9263305664062, -649.1376953125, -273.1222229003906, 312.0288391113281, -185.23329162597656, 845.2059936523438, 374.67047119140625, -722.9388427734375, -582.977783203125, 257.93255615234375, 41.21258544921875, 52.339176177978516, -144.68370056152344, -624.289306640625, 189.02322387695312, -488.89984130859375, -890.2035522460938, 573.679443359375, -907.7108154296875, 485.7755432128906, -48.916751861572266, -813.7401733398438, 587.4998779296875, -211.92694091796875, -594.3153686523438, 459.7543640136719, -119.1583480834961, -538.4273681640625, -723.4545288085938, 426.6300354003906, 66.32882690429688, 822.4471435546875, 134.0530242919922, -489.06964111328125, -800.523681640625, 851.6395263671875, 296.7525329589844, -188.61167907714844, 302.42578125, 999.3543090820312, 982.5218505859375, 333.6282043457031, -559.8905639648438, 772.83154296875, -550.6143188476562, -925.596923828125, -600.0213623046875, 183.48504638671875, 432.9690246582031, 430.051513671875, -111.96574401855469, -321.8283996582031, -421.8010559082031, -409.724853515625, 795.7042236328125, -224.05514526367188, -972.2898559570312, -941.3591918945312, 905.4725952148438, 864.8119506835938, -938.4862060546875, 644.056396484375, 219.13145446777344, -434.5539855957031, -674.9525146484375, -60.0000114440918, -559.0872192382812, -854.68603515625, -682.9417114257812, 295.4338073730469, -886.192138671875, -852.9400024414062, -431.2876281738281, -161.13619995117188, 842.4815063476562, -414.4031677246094, -619.2061157226562, 542.8516235351562, 823.2379150390625, 204.87034606933594, 390.2553405761719, 337.09783935546875, 755.7286376953125, -171.928466796875, 965.6130981445312, -820.7176513671875, 682.5889282226562, -333.3795166015625, 376.45037841796875, -950.342529296875, -886.7052001953125, 498.7497253417969, 422.70001220703125, -588.3217163085938, -798.7114868164062, 200.51202392578125, -395.6263427734375, -82.2125244140625, -598.6254272460938, 559.3953247070312, 974.416015625, 606.1318359375, -793.7953491210938, 4.789636135101318, -273.0472412109375, -252.119384765625, -869.2058715820312, 581.1859741210938, -809.9475708007812, 783.7933959960938, 289.74176025390625, -565.599609375, 624.11474609375, 599.8663330078125, 602.2650146484375, 986.0611572265625, 426.79705810546875, -860.901611328125, -757.8543701171875, -227.36854553222656, 748.5228881835938, 819.94677734375, 496.06195068359375, 750.9727783203125, -395.21728515625, -392.8636169433594, 677.5814208984375, 694.3472900390625, 983.1175537109375, 208.66880798339844, 687.1565551757812, -402.2780456542969, 769.3132934570312, -903.4911499023438, 603.474609375, 649.6615600585938, 986.161376953125, -215.5764923095703, 696.6207885742188, -1.8615221977233887, -427.7003479003906, -761.3386840820312, 761.0948486328125, 45.0523567199707, -370.02252197265625, -165.97781372070312, 816.2569580078125, 151.678955078125, 740.6053466796875, -12.571389198303223, 239.8246307373047, -808.123291015625, -685.5711669921875, 333.44390869140625, -469.90496826171875, -228.4779510498047, -647.5289306640625, 770.4024658203125, -777.165283203125, 441.0475769042969, 578.6279907226562, 158.7229461669922, -102.31525421142578, 728.3948364257812, -158.45697021484375, -45.81161880493164, 87.71653747558594, 908.934326171875, -120.69766235351562, -52.046043395996094, -479.8546447753906, 834.996826171875, -352.37335205078125, -350.7894287109375, -668.646728515625, 633.1801147460938, -864.7161865234375, 548.44580078125, 719.4910278320312, -149.987548828125, 276.3916931152344, 730.7184448242188, -596.8851928710938, 133.14947509765625, 916.1906127929688, -663.7415161132812, 640.2001342773438, 512.861572265625, 514.773193359375, -745.1310424804688, -673.8003540039062, 258.7842712402344, -629.3483276367188, 831.4102172851562, 425.38818359375, -775.5530395507812, -219.91864013671875, 387.7742614746094, 647.344970703125, 898.9432373046875, 940.8019409179688, -496.1515808105469, -851.6181030273438, 656.9828491210938, -434.9787292480469, -309.8251953125, -139.3385772705078, 177.53358459472656, -329.8377685546875, 753.6918334960938, 41.15814971923828, 138.37550354003906, 93.05585479736328, -200.83840942382812, 844.2254028320312, -130.3924560546875, 809.1776123046875, -125.318115234375, -25.76255989074707, 499.549560546875, -423.5859680175781, -664.5413818359375, 76.57954406738281, 64.89574432373047, -774.7587280273438, 523.576904296875, 466.2001037597656, -280.4716491699219, -803.3646240234375, -743.7371215820312, 715.4424438476562, 344.0272216796875, -664.113037109375, -724.9873046875, 271.1472473144531, -165.60330200195312, -985.0530395507812, -3.693697452545166, -352.87127685546875, 126.88050079345703, -521.2755737304688, 424.91046142578125, -433.3578186035156, 378.12432861328125, -140.09078979492188, -277.7177429199219, 349.0690612792969, -67.21601104736328, 976.8600463867188, 983.9496459960938, 162.90249633789062, -259.6311950683594, -455.70013427734375, 54.48370361328125, 198.4663848876953, -771.7833862304688, 186.09616088867188, -290.6041564941406, -465.96990966796875, 837.594482421875, 304.21453857421875, -42.89693069458008, 928.55712890625, 926.544189453125, 787.3701782226562, -522.103271484375, 609.2875366210938, 884.6351928710938, -367.33441162109375, -947.7906494140625, 564.5428466796875, -230.96099853515625, -702.7034912109375, 963.7212524414062, 398.75396728515625, -719.1325073242188, 741.1720581054688, -129.68934631347656, -56.616268157958984, -722.2918701171875, 214.4734344482422, -575.555419921875, -563.7818603515625, -844.1757202148438, -783.3587646484375, 294.31231689453125, -265.5607604980469, -539.0657958984375, 380.7375183105469, 730.4802856445312, 467.4217834472656, -174.42601013183594, 984.1812133789062, 617.5780639648438, -571.7825317382812, -33.4155387878418, -26.863840103149414, 386.48748779296875, -13.106404304504395, -186.46414184570312, -957.3755493164062, -566.200439453125, 633.3018798828125, 436.2138977050781, -547.00048828125, 380.739501953125, -969.0670776367188, 352.1687316894531, 720.4984130859375, -19.940038681030273, 81.02467346191406, 80.80325317382812, 83.1701431274414, 345.9878234863281, 645.5425415039062, -879.3770141601562, 481.9429016113281, -427.61346435546875, 400.9002685546875, -832.4309692382812, 802.4705200195312, -631.1686401367188, 502.55584716796875, 791.7066040039062, 526.6483154296875, 183.94749450683594, 622.2078247070312, 971.9180297851562, 216.1362762451172, -733.6888427734375, -778.848876953125, 973.751953125, -595.0350952148438, 551.5709228515625, -692.3489379882812, -675.7158203125, 578.3204345703125, 486.7403869628906, 31.578548431396484, -162.03269958496094, -481.0852966308594, 179.97726440429688, -691.47802734375, -345.924560546875, -501.9964904785156, 672.7571411132812, -509.85736083984375, -951.2496948242188, -484.4101867675781, -758.6316528320312, 680.1511840820312, -971.3903198242188, 694.3826293945312, 862.3252563476562, 161.0861053466797, -282.0262145996094, -513.7070922851562, -907.1949462890625, 224.7471466064453, 257.2354736328125, -502.1807556152344, 279.0204162597656, -841.3665771484375, -158.4341278076172, 442.66571044921875, -569.3696899414062, -756.58642578125, 515.3820190429688, -218.2581024169922, 793.2955932617188, -811.7880859375, -816.4807739257812, 48.43172836303711, -150.11978149414062, 529.6598510742188, 867.7537841796875, 942.603271484375, 599.4511108398438, -806.4187622070312, 592.54248046875, 937.548583984375, 691.1539916992188, -289.73876953125, 850.3778686523438, -693.1102294921875, -853.3010864257812, -267.2711181640625, -543.6874389648438, 563.40869140625, -995.8057250976562, -484.0721435546875, -7.741693019866943, -714.8157958984375, 722.02294921875, 346.5265808105469, 378.4922180175781, -125.63081359863281, -228.4267120361328, -103.65563201904297, 78.80374145507812, 53.741371154785156, -406.7638244628906, -543.4224243164062, -599.301513671875, 632.243408203125, -916.8328247070312, 165.70677185058594, 882.8653564453125, -118.70108795166016, 405.3099670410156, -212.58062744140625, 708.9646606445312, -573.6775512695312, -686.2235107421875, 744.3685302734375, -394.1384582519531, 545.0601196289062, 995.5588989257812, 453.5140380859375, 809.0614624023438, 272.593017578125, -223.96026611328125, -714.6864624023438, 522.8518676757812, -539.5818481445312, 752.6983032226562, 341.3082580566406, 499.730224609375, 805.4202880859375, 254.33856201171875, -749.1578369140625, 201.0883331298828, -654.4173583984375, -138.4321746826172, -247.45535278320312, 409.2169494628906, 742.138916015625, -696.2205810546875, 552.7754516601562, -94.75945281982422, 103.51295471191406, 578.9014282226562, 510.06689453125, -345.26953125, -37.338958740234375, 527.9042358398438, 684.158203125, -211.10536193847656, 555.2506103515625, 492.6875, 777.5776977539062, 7.187664985656738, -456.684326171875, 903.9403686523438, -292.2528381347656, -393.7458801269531, -248.22528076171875, 493.7668762207031, -574.76953125, 426.70263671875, -395.8379211425781, 597.7492065429688, -543.5879516601562, -514.5692138671875, 881.5847778320312, -835.3507080078125, 29.48830795288086, 128.49574279785156, 324.58721923828125, -198.09666442871094, -404.70941162109375, 11.48224925994873, -131.63226318359375, -812.7413940429688, 797.246826171875, 282.512939453125, -883.7324829101562, 194.6742401123047, -509.4091796875, -406.12646484375, 622.908203125, 648.103759765625, -975.447509765625, -210.80548095703125, -398.49432373046875, -965.9361572265625, -944.3910522460938, 691.8597412109375, -48.73933410644531, -980.917236328125, -290.45953369140625, 507.5185852050781, 801.3078002929688, 859.6629638671875, 766.333740234375, 445.6850280761719, 42.87632369995117, 354.9701843261719, -873.0503540039062, -266.538818359375, 565.8642578125, -800.2470703125, 689.80322265625, 511.3106689453125, 307.22760009765625, -550.0487060546875, -131.26669311523438, -916.0550537109375, -759.4688720703125, 685.63427734375, -62.16429901123047, -419.5016174316406, -835.9598999023438, -214.322021484375, -676.4445190429688, -166.95236206054688, -596.2969360351562, -361.3741149902344, -769.1990356445312, 550.98876953125, -993.4224243164062, 714.339111328125, -613.0410766601562, -421.8681335449219, -635.0989990234375, 900.0218505859375, -985.4335327148438, 918.7278442382812, -366.6615905761719, -537.5653686523438, 723.2901611328125, 282.3178405761719, -842.9854125976562, -8.321115493774414, -622.9521484375, 191.61428833007812, 365.876953125, 959.6627197265625, 168.70558166503906, 935.9432983398438, -584.3923950195312, -968.6880493164062, -496.26092529296875, -487.687744140625, -430.0640563964844, 42.861446380615234, 776.6845092773438, -168.42572021484375, -539.7555541992188, 770.6194458007812, -111.92465209960938, 385.25811767578125, -447.9617004394531, -403.2362365722656, -911.5869750976562, -600.6510620117188, -175.1984405517578, -636.2874755859375, -762.8209228515625, 852.650146484375, -687.5869750976562, -971.7266845703125, -705.2535400390625, 190.69476318359375, -122.3421859741211, -554.144287109375, -60.777713775634766, -989.3616943359375, 698.4595947265625, -189.23341369628906, -172.9640350341797, 506.97906494140625, -830.217041015625, -585.6232299804688, -72.10470581054688, 968.5577392578125, 704.97265625, -723.7050170898438, 822.0343627929688, 382.8929443359375, 198.72349548339844, -341.13037109375, 703.6303100585938, 457.8765563964844, -81.97095489501953, -295.2102355957031, 149.312255859375, 681.682373046875, -160.43060302734375, 653.345947265625, 158.03265380859375, -702.1987915039062, -939.5692138671875, -374.3498229980469, -689.7861328125, -403.08544921875, -273.689453125, -806.0867919921875, -432.36602783203125, 699.4201049804688, 730.2257080078125, 606.3735961914062, 778.9424438476562, 982.8917846679688, -274.5494689941406, -344.4911804199219, -10.300519943237305, 294.5938415527344, -161.4694061279297, 434.8934020996094, 979.5302124023438, -689.5006713867188, 235.43869018554688, -419.24371337890625, 281.92578125, -715.451904296875, -34.04669952392578, -385.02423095703125, -179.82574462890625, 546.923583984375, -128.8256072998047, 99.0947494506836, -320.7135925292969, -454.6676025390625, 258.57550048828125, 47.49527359008789, -180.65086364746094, 551.756591796875, 423.96929931640625, -829.1279907226562, -797.4336547851562, -851.7758178710938, 976.1239013671875, 922.6904907226562, 654.3011474609375, -963.0357666015625, 490.6825866699219, -601.1932373046875, 6.010406494140625, -927.4490966796875, -69.81584167480469, -681.3627319335938, 879.2448120117188, 205.0941925048828, -830.381591796875, 771.1307373046875, 689.483642578125, 369.1949768066406, 876.1047973632812, 737.65625, -586.2868041992188, -143.8188934326172, 905.7409057617188, 877.9193725585938, -618.2333374023438, 402.9454650878906, 24.517343521118164, 535.0084838867188, -451.18670654296875, 819.4436645507812, 598.1687622070312, 189.1517791748047, -421.707275390625, 785.9948120117188, -605.5834350585938, -47.55076217651367, -686.6242065429688, 182.51553344726562, 484.0752868652344, 605.9087524414062, 8.27971363067627, 299.626220703125, 850.5223999023438, -93.40374755859375, -393.5245361328125, 983.7640991210938, -698.0859985351562, -92.85249328613281, -859.4169311523438, -144.7737274169922, 17.21072769165039, -113.72288513183594, -663.9567260742188, -794.6986083984375, -102.35728454589844, -446.9462585449219, -893.4484252929688, -332.2151184082031, 311.8633728027344, -787.42919921875, -174.4158172607422, 915.4380493164062, -480.3593444824219, -956.8668212890625, -541.5867309570312, 776.2442016601562, 648.1884765625, -175.29615783691406, 671.7297973632812, 31.432165145874023, 987.6477661132812, -766.1515502929688, -777.4495239257812, -726.4569702148438, 296.9076232910156, -828.9559936523438, 771.5067749023438, 681.2412719726562, -84.4478988647461, -358.1311950683594, 956.5540161132812, -690.5435180664062, 439.6551208496094, -916.908935546875, 640.0326538085938, -58.76393127441406, -758.2805786132812, -876.0358276367188, 786.6453247070312, -66.75743103027344, 269.9107360839844, -625.2711791992188, 499.3946838378906, 587.7333984375, -38.660945892333984, -440.442138671875, 991.3646850585938, -470.0945739746094, -512.0703735351562, -103.61519622802734, 190.8998260498047, 24.287654876708984, -885.3961181640625, -909.7380981445312, -734.3856811523438, 513.541748046875, 692.1788330078125, 114.47894287109375, 691.1679077148438, -534.6567993164062, 671.609130859375, -878.6873779296875, 570.9775390625, -530.757568359375, 175.0896759033203, 957.9459228515625, -102.8868637084961, -879.8084716796875, -334.0769348144531, -144.9904327392578, -79.56134796142578, 399.3387451171875, -607.6971435546875, -159.9069366455078, -572.6124877929688, -51.014366149902344, -657.3923950195312, -651.4810791015625, -191.2373504638672, 345.2164001464844, -792.4586181640625, -456.6141662597656, -980.0364379882812, -428.73486328125, 860.9366455078125, 634.0208740234375, -313.4432678222656, -386.3388977050781, 250.78341674804688, 180.92898559570312, -379.7109680175781, 508.90643310546875, 597.3120727539062, -649.7584838867188, 450.7115478515625, -935.9658203125, 868.3009643554688, -329.8955383300781, -939.0693359375, 759.5947265625, 955.7114868164062, 119.98074340820312, 280.73846435546875, 69.02027130126953, -943.6974487304688, -980.7445678710938, 758.343994140625, 34.30817413330078, 294.1652526855469, -668.5917358398438, 904.5265502929688, -762.0046997070312, 57.56607437133789, 331.9046325683594, -736.0199584960938, -301.50982666015625, 121.72955322265625, 790.6598510742188, -108.11241149902344, -268.5533142089844, -673.2998657226562, -607.076416015625, 309.1392822265625, -747.3342895507812, -340.8668212890625, -494.1708984375, -775.6346435546875, -129.2545623779297, -625.2916259765625, -121.61492156982422, 500.41693115234375, 530.34326171875, 173.3802947998047, -264.0783996582031, -618.504150390625, 14.230305671691895, 110.63876342773438, 268.857421875, -475.6713562011719, 871.0237426757812, -984.3070678710938, -840.069580078125, -343.4044189453125, -982.4701538085938, 582.9720458984375, 942.6738891601562, 60.5040283203125, 415.4568176269531, 518.0013427734375, 889.8594970703125, -89.13406372070312, 634.8599243164062, -991.322998046875, 619.489501953125, 333.18646240234375, -846.369384765625, -958.0526123046875, 736.2523193359375, -966.4471435546875, 363.0990295410156, -843.7855834960938, 618.0074462890625, 303.35919189453125, -585.27490234375, -470.0299987792969, -156.6241912841797, 419.432861328125, -253.85206604003906, -918.9254760742188, -458.8000183105469, 502.3860778808594, 848.1239624023438, 33.357120513916016, -369.4367980957031, 903.5076293945312, 399.145751953125, 217.73980712890625, 261.2043762207031, -535.5309448242188, -339.51934814453125, -539.3019409179688, 542.065185546875, 538.9840087890625, 45.107723236083984, 987.5103149414062, 974.5125732421875, 283.42095947265625, -345.39959716796875, -526.1021118164062, 409.090087890625, 768.837158203125, -650.8124389648438, 370.77117919921875, 155.04766845703125, -2.473073720932007, 661.3392333984375, -18.214160919189453, 76.56581115722656, -424.1780700683594, 472.43359375, 119.16253662109375, -369.5461120605469, 743.90234375, -548.7979125976562, -561.0338745117188, 381.10528564453125, 503.3050842285156, -90.0484848022461, -175.6824188232422, 71.41471099853516, -175.81285095214844, 283.1973571777344, -770.0296630859375, 614.8037719726562, 347.4125061035156, 992.5263671875, -405.5315246582031, 143.0817108154297, 827.8094482421875, -415.5141906738281, 97.94551086425781, 253.23458862304688, -129.06005859375, 113.2291030883789, -755.0358276367188, 446.936767578125, -394.8960876464844, -271.0439453125, 413.33734130859375, -67.4002456665039, 65.02848052978516, 592.8048706054688, -690.9505004882812, 620.630615234375, -933.62451171875, 890.3846435546875, 215.5701446533203, -887.9845581054688, 585.2525634765625, -329.15570068359375, 961.1994018554688, -499.6721496582031, 224.34326171875, 989.3309936523438, -296.88653564453125, 182.43063354492188, 115.31889343261719, 660.6400756835938, -725.115966796875, 958.8878173828125, 245.27427673339844, -884.8497924804688, -435.2586364746094, 223.4689178466797, -111.40562438964844, 562.6882934570312, 0.6009929776191711, 410.22857666015625, 123.07952880859375, 660.2056884765625, 38.60393524169922, -704.5028686523438, -544.2344970703125, 209.97215270996094, 155.0453338623047, 828.245849609375, -711.6826171875, -248.64837646484375, -234.09326171875, -398.0264587402344, 434.08734130859375, -599.8096313476562, 524.5511474609375, 389.4482116699219, 26.656204223632812, -317.4652404785156, 219.8076934814453, 445.8744812011719, -637.07958984375, -182.51763916015625, -488.9123840332031, 782.97314453125, -533.3408813476562, -266.6058044433594, -12.44853401184082, 171.69253540039062, 319.1615295410156, -251.1592559814453, -343.9634704589844, 279.81500244140625, 359.28515625, -46.14878463745117, 876.09716796875, 864.4637451171875, 229.73934936523438, -567.740966796875, -295.7452697753906, 923.7366333007812, -318.4349670410156, -182.64581298828125, -322.56488037109375, 406.9414978027344, 888.669189453125, 796.685791015625, 970.0339965820312, -162.4576873779297, -97.10101318359375, 125.8802261352539, -585.2809448242188, 151.66590881347656, -241.1958465576172, 716.8109130859375, -205.09954833984375, 640.105224609375, -758.5513305664062, 932.1355590820312, 924.4560546875, -616.68798828125, -885.4432373046875, 655.24267578125, -503.0328369140625, 80.87693786621094, -595.3509521484375, 779.3075561523438, 526.5018920898438, 55.8030891418457, -973.4396362304688, -534.8825073242188, 474.513671875, -403.3965759277344, -593.7620849609375, 482.4422302246094, -828.35693359375, 104.73052978515625, -14.278894424438477, -367.4411315917969, -833.35546875, -840.2625122070312, -160.0987548828125, -546.9382934570312, -342.26806640625, 994.3976440429688, 577.4033203125, 617.0791625976562, 510.49102783203125, 492.5274963378906, -139.00479125976562, 448.0715637207031, -468.5511779785156, 127.92253875732422, -380.0213317871094, 43.3216667175293, 553.0291137695312, -751.5869140625, 658.300048828125, 529.844482421875, 400.0063781738281, -60.65049362182617, 583.7694702148438, 223.86012268066406, 959.9994506835938, 486.8628234863281, 641.7407836914062, 892.5982055664062, -423.4888610839844, 997.0117797851562, 413.1789245605469, 730.5127563476562, -92.56727600097656, 269.4428405761719, 757.011962890625, 448.4205627441406, 596.2301635742188, -365.9722900390625, -829.9636840820312, -418.9178466796875, 192.71339416503906, 481.963623046875, 957.4065551757812, -233.8397674560547, -342.7112731933594, -392.1608581542969, -107.8794937133789, -969.0574951171875, 432.8705749511719, -47.003326416015625, -502.1541748046875, -447.8804931640625, 530.4273681640625, 676.2991943359375, 455.0032653808594, -373.5270690917969, -260.62060546875, 601.931884765625, -1.7881592512130737, 510.7369384765625, 680.4566650390625, -766.0748291015625, -173.40086364746094, 343.04962158203125, 57.91685485839844, -21.113271713256836, -959.8278198242188, -203.95343017578125, 170.0335235595703, 280.9491271972656, 608.6339111328125, -21.26942253112793, -242.97813415527344, 604.5213623046875, -485.9742736816406, 76.82583618164062, 669.5537719726562, -838.7508544921875, -272.8604736328125, -518.9028930664062, -223.0644073486328, 126.68878936767578, -409.8001708984375, 843.7050170898438, 381.4246520996094, -294.10516357421875, -155.2890167236328, 600.7096557617188, 219.96823120117188, 487.1904296875, 460.3252868652344, 972.021484375, -359.80340576171875, -271.8926086425781, -123.2372817993164, 443.71820068359375, -340.6399230957031, -935.7628784179688, 9.678339958190918, -390.1239929199219, -98.57376098632812, -84.20122528076172, 545.2354736328125, -985.700927734375, -860.6351928710938, 683.7967529296875, 46.664306640625, -773.9093627929688, 732.9097900390625, 957.8320922851562, -606.2821044921875, -419.2098693847656, 173.41322326660156, -332.4428405761719, -346.6317443847656, -527.51123046875, 117.7063217163086, -653.1416015625, 168.62452697753906, 198.14808654785156, 754.0455322265625, 565.5989990234375, 183.0923309326172, 916.6629638671875, -935.83251953125, 432.6910095214844, -860.6259765625, -18.681650161743164, -623.69970703125, 384.0698547363281, -64.9191665649414, 406.4051818847656, -690.9091796875, 796.9844360351562, -105.28042602539062, 102.33085632324219, 744.1005859375, 815.4439086914062, -749.1891479492188, -677.1578369140625, -113.45215606689453, 890.7386474609375, 688.093017578125, -959.5974731445312, -913.8400268554688, -311.2121887207031, -408.4720764160156, -76.02239990234375, -445.9786071777344, -696.6608276367188, -507.9454040527344, 608.5164794921875, 691.8455200195312, -459.2254333496094, -886.2003173828125, -352.3739013671875, 319.99359130859375, 165.85946655273438, -814.6802368164062, 431.85028076171875, 981.9009399414062, -405.7890319824219, 277.6620178222656, 689.7191772460938, -625.0498046875, 452.74664306640625, -677.8432006835938, -96.43537139892578, 989.0103759765625, -993.5629272460938, 124.35189819335938, -24.206707000732422, -368.7312316894531, 259.5455627441406, -862.938232421875, 266.1942138671875, -984.286376953125, 357.498291015625, -617.9830322265625, -54.49422073364258, -782.4058837890625, -142.5110626220703, -316.4175720214844, 682.94091796875, 842.7510375976562, 236.22445678710938, 438.4638977050781, -201.40370178222656, -188.62893676757812, 573.7182006835938, 506.5846252441406, 55.71720504760742, -318.5613708496094, -655.0385131835938, -44.472206115722656, -100.41886138916016, 785.609619140625, -23.18164825439453, -154.53501892089844, -229.73593139648438, -712.61767578125, 78.41522216796875, 464.19659423828125, 988.7567138671875, 138.00611877441406, -420.78857421875, 409.8080749511719, 669.5051879882812, 418.89959716796875, 986.3258056640625, 529.6241455078125, -649.514404296875, -542.37646484375, 143.50694274902344, 905.0379028320312, -637.6675415039062, -932.141357421875, 624.0665893554688, -608.3163452148438, 957.9678344726562, 839.4219970703125, 260.04010009765625, 237.82940673828125, 374.9571228027344, 325.331787109375, 239.04844665527344, 480.6026611328125, 717.507080078125, -11.272567749023438, 233.67874145507812, 766.93994140625, -854.4220581054688, -121.32878875732422, 54.91898727416992, -307.8922119140625, -845.5394287109375, 584.47216796875, 770.7926025390625, 982.1841430664062, -399.4020080566406, 593.3136596679688, 143.93968200683594, 169.93951416015625, 204.24769592285156, 229.35205078125, -336.7470703125, 808.2774658203125, 341.3229064941406, -734.7557373046875, -984.6264038085938, -968.8494262695312, -194.6132049560547, -35.79152297973633, 46.02656936645508, -800.516845703125, -100.57759094238281, 449.9877624511719, -471.7770690917969, -695.059326171875, -75.65117645263672, -474.2268371582031, -866.2229614257812, -19.66058349609375, 782.657470703125, -292.1278991699219, -9.9640531539917, 991.894775390625, -321.6611328125, 801.1287231445312, 432.321044921875, 296.9178771972656, -298.4294738769531, -126.18107604980469, 834.9172973632812, 407.9477844238281, 591.8141479492188, -536.306640625, -362.1447448730469, 412.93792724609375, 130.80294799804688, 106.08421325683594, -887.9292602539062, -270.8439636230469, -703.8673706054688, 384.0893859863281, -876.9417724609375, 515.9686279296875, 851.6263427734375, 584.252685546875, -762.885986328125, -732.6530151367188, 403.2973327636719, -978.9968872070312, 318.9970703125, -549.9457397460938, -237.67613220214844, 351.67926025390625, 68.98802947998047, 694.9064331054688, -35.3165168762207, 335.2318420410156, -220.8480682373047, 57.42735290527344, 621.4534301757812, -4.61001443862915, -289.10211181640625, 733.0355224609375, -848.2843627929688, 19.325061798095703, -582.2525024414062, 746.4843139648438, -976.5116577148438, -648.52978515625, 601.9352416992188, 866.4152221679688, -465.46942138671875, 828.7345581054688, -838.8493041992188, 621.9230346679688, 133.23672485351562, 107.27798461914062, -44.54079818725586, 72.9620132446289, -877.4154663085938, -244.6757354736328, -462.63177490234375, -487.6203308105469, -352.9990539550781, -390.8789978027344, -864.4594116210938, -989.5792236328125, 724.1322021484375, 791.0700073242188, -228.22711181640625, -22.822580337524414, 496.8785705566406, -532.9461669921875, -716.3671264648438, -393.0530090332031, -429.6534729003906, 223.7342529296875, -408.87689208984375, 415.3237609863281, -201.1144256591797, -920.8889770507812, 38.68523025512695, 828.4747314453125, -732.9361572265625, 773.4173583984375, -991.171875, -8.985125541687012, -909.6009521484375, -328.56103515625, -156.2656707763672, 577.0711669921875, -606.387939453125, -209.2620849609375, 497.8251037597656, -440.7087097167969, 802.9273681640625, 413.9352722167969, 533.8954467773438, 469.1070861816406, 459.1539001464844, 399.7237854003906, 925.1126098632812, 9.280771255493164, 392.3165283203125, 508.958740234375, -903.7845458984375, -713.83154296875, -414.2601318359375, -367.5762634277344, 140.03927612304688, -649.4168090820312, -735.8304443359375, -832.0718994140625, -578.8245849609375, -963.1788940429688, 147.41078186035156, -558.8099975585938, 558.3493041992188, -165.23854064941406, -629.8096923828125, -43.63370132446289, -740.4279174804688, -99.74795532226562, -190.326416015625, -59.31878662109375, 596.8623657226562, -136.42340087890625, -213.46484375, -620.673095703125, -597.77392578125, 183.88063049316406, -449.4448547363281, 762.7838134765625, -679.761474609375, -648.0885009765625, 399.4779052734375, -244.73516845703125, -931.3616333007812, -57.27324295043945, -477.1260986328125, -242.9613494873047, 133.34056091308594, 716.0255737304688, 284.1548767089844, -22.464521408081055, -716.3372802734375, 177.44549560546875, 50.248992919921875, 689.3252563476562, 103.20584869384766, -288.2220458984375, -925.9315795898438, 402.6402587890625, -970.82958984375, -250.40176391601562, -517.5279541015625, 173.50454711914062, -844.4102783203125, 320.1692810058594, -115.06256103515625, -769.9029541015625, -280.3199157714844, -892.0309448242188, 638.00830078125, -809.139892578125, 914.6918334960938, 239.2658233642578, -868.08154296875, -428.9028015136719, 479.9173278808594, 559.880859375, 668.70068359375, 665.6680297851562, 574.35400390625, 975.4127807617188, 493.8061828613281, -766.4867553710938, -226.348388671875, 754.7918701171875, -446.5975036621094, 933.4193725585938, 685.587646484375, 212.21095275878906, -734.103515625, -952.1339111328125, -206.33370971679688, -491.6429748535156, -362.3861999511719, -676.4009399414062, -226.54835510253906, 363.25750732421875, -241.67799377441406, -187.76409912109375, -197.11473083496094, 720.7640991210938, -129.79739379882812, 484.072265625, 405.1846923828125, 252.92083740234375, -853.8319702148438, 897.1876220703125, -594.9784545898438, 720.861328125, -117.63758850097656, 255.1663818359375, -183.61080932617188, 24.200706481933594], "expected": [1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, -1.0, -1.0, 1.0, -1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, 1.0, -1.0, 1.0, -1.0, -1.0, -1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, 1.0, 1.0, -1.0, 1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, -1.0, -1.0, 1.0, -1.0, -1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, -1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, -1.0, 1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, 1.0, -1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, -1.0, 1.0, -1.0, 1.0, -1.0, 1.0, -1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, -1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, 1.0, -1.0, -1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, -1.0, 1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, 1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0]} diff --git a/lib/node_modules/@stdlib/math/base/special/gammasgnf/test/fixtures/python/runner.py b/lib/node_modules/@stdlib/math/base/special/gammasgnf/test/fixtures/python/runner.py new file mode 100644 index 000000000000..6f39c0fbcb43 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/gammasgnf/test/fixtures/python/runner.py @@ -0,0 +1,74 @@ +#!/usr/bin/env python +# +# @license Apache-2.0 +# +# Copyright (c) 2025 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT 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 gammasgn + +# 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, name): + """Generate fixture data and write to file. + + # Arguments + + * `x`: domain + * `name::str`: output filename + + # Examples + + ``` python + python> x = linspace(-1000, 1000, 2001) + python> gen(x, './data.json') + ``` + """ + y = gammasgn(x).astype(np.float32) + + # Convert all NaN values to 0 according to our convention: + y[np.isnan(y)] = 0 + + # Store data to be written to file as a dictionary: + data = { + "x": x.tolist(), + "expected": y.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.uniform(-1000, 1000, 2001).astype(np.float32) + gen(x, "data.json") + + +if __name__ == "__main__": + main() diff --git a/lib/node_modules/@stdlib/math/base/special/gammasgnf/test/test.js b/lib/node_modules/@stdlib/math/base/special/gammasgnf/test/test.js new file mode 100644 index 000000000000..e7cd9549eec2 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/gammasgnf/test/test.js @@ -0,0 +1,85 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF 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( '@stdlib/math/base/assert/is-nanf' ); +var isPositiveZerof = require( '@stdlib/math/base/assert/is-positive-zerof' ); +var gammasgnf = require( './../lib' ); + + +// FIXTURES // + +var data = require( './fixtures/python/data.json' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gammasgnf, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function computes the sign of the gamma function', function test( t ) { + var expected; + var x; + var v; + var i; + + x = data.x; + expected = data.expected; + + for ( i = 0; i < x.length; i++ ) { + v = gammasgnf( x[ i ] ); + t.strictEqual( v, expected[ i ], 'returns expected value' ); + } + t.end(); +}); + +tape( 'the function returns `NaN` if provided `NaN`', function test( t ) { + var v = gammasgnf( NaN ); + t.strictEqual( isnanf( v ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function returns `+0` if provided `+0`', function test( t ) { + var v = gammasgnf( +0.0 ); + t.strictEqual( isPositiveZerof( v ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function returns `+0` if provided `-0`', function test( t ) { + var v = gammasgnf( -0.0 ); + t.strictEqual( isPositiveZerof( v ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function returns `+0` if provided a negative integer', function test( t ) { + var v; + var i; + + for ( i = 0; i >= -100; i-- ) { + v = gammasgnf( i ); + t.strictEqual( isPositiveZerof( v ), true, 'returns expected value' ); + } + t.end(); +}); diff --git a/lib/node_modules/@stdlib/math/base/special/gammasgnf/test/test.native.js b/lib/node_modules/@stdlib/math/base/special/gammasgnf/test/test.native.js new file mode 100644 index 000000000000..b9924afa5252 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/gammasgnf/test/test.native.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF 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( '@stdlib/math/base/assert/is-nanf' ); +var isPositiveZerof = require( '@stdlib/math/base/assert/is-positive-zerof' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var gammasgnf = tryRequire( resolve( __dirname, './../lib/native.js' ) ); +var opts = { + 'skip': ( gammasgnf instanceof Error ) +}; + + +// FIXTURES // + +var data = require( './fixtures/python/data.json' ); + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gammasgnf, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function computes the sign of the gamma function', opts, function test( t ) { + var expected; + var x; + var v; + var i; + + x = data.x; + expected = data.expected; + + for ( i = 0; i < x.length; i++ ) { + v = gammasgnf( x[ i ] ); + t.strictEqual( v, expected[ i ], 'returns expected value' ); + } + t.end(); +}); + +tape( 'the function returns `NaN` if provided `NaN`', opts, function test( t ) { + var v = gammasgnf( NaN ); + t.strictEqual( isnanf( v ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function returns `+0` if provided `+0`', opts, function test( t ) { + var v = gammasgnf( +0.0 ); + t.strictEqual( isPositiveZerof( v ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function returns `+0` if provided `-0`', opts, function test( t ) { + var v = gammasgnf( -0.0 ); + t.strictEqual( isPositiveZerof( v ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function returns `+0` if provided a negative integer', opts, function test( t ) { + var v; + var i; + + for ( i = 0; i >= -100; i-- ) { + v = gammasgnf( i ); + t.strictEqual( isPositiveZerof( v ), true, 'returns expected value' ); + } + t.end(); +});