From a653e26c5f80a13c5e6458af5b5a7477da2e3db0 Mon Sep 17 00:00:00 2001 From: Karan Anand Date: Mon, 21 Jul 2025 09:50:24 +0530 Subject: [PATCH 01/10] feat: temp commit --- .../math/base/special/sinpif/README.md | 191 ++++++++++++++++++ .../special/sinpif/benchmark/benchmark.js | 52 +++++ .../sinpif/benchmark/benchmark.native.js | 61 ++++++ .../sinpif/benchmark/c/native/Makefile | 146 +++++++++++++ .../sinpif/benchmark/c/native/benchmark.c | 136 +++++++++++++ .../sinpif/benchmark/cpp/boost/Makefile | 110 ++++++++++ .../sinpif/benchmark/cpp/boost/benchmark.cpp | 132 ++++++++++++ .../special/sinpif/benchmark/julia/REQUIRE | 2 + .../sinpif/benchmark/julia/benchmark.jl | 144 +++++++++++++ .../special/sinpif/benchmark/r/DESCRIPTION | 9 + .../special/sinpif/benchmark/r/benchmark.R | 109 ++++++++++ .../math/base/special/sinpif/binding.gyp | 170 ++++++++++++++++ .../math/base/special/sinpif/docs/repl.txt | 31 +++ .../base/special/sinpif/docs/types/index.d.ts | 52 +++++ .../base/special/sinpif/docs/types/test.ts | 44 ++++ .../base/special/sinpif/examples/c/Makefile | 146 +++++++++++++ .../base/special/sinpif/examples/c/example.c | 31 +++ .../base/special/sinpif/examples/index.js | 30 +++ .../math/base/special/sinpif/include.gypi | 53 +++++ .../include/stdlib/math/base/special/sinpi.h | 38 ++++ .../math/base/special/sinpif/lib/index.js | 49 +++++ .../math/base/special/sinpif/lib/main.js | 117 +++++++++++ .../math/base/special/sinpif/lib/native.js | 58 ++++++ .../math/base/special/sinpif/manifest.json | 99 +++++++++ .../math/base/special/sinpif/package.json | 68 +++++++ .../math/base/special/sinpif/src/Makefile | 70 +++++++ .../math/base/special/sinpif/src/addon.c | 22 ++ .../math/base/special/sinpif/src/main.c | 80 ++++++++ .../sinpif/test/fixtures/julia/REQUIRE | 2 + .../sinpif/test/fixtures/julia/decimals.json | 1 + .../sinpif/test/fixtures/julia/integers.json | 1 + .../sinpif/test/fixtures/julia/runner.jl | 70 +++++++ .../math/base/special/sinpif/test/test.js | 124 ++++++++++++ .../base/special/sinpif/test/test.native.js | 133 ++++++++++++ 34 files changed, 2581 insertions(+) create mode 100644 lib/node_modules/@stdlib/math/base/special/sinpif/README.md create mode 100644 lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/benchmark.native.js create mode 100644 lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/c/native/Makefile create mode 100644 lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/c/native/benchmark.c create mode 100644 lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/cpp/boost/Makefile create mode 100644 lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/cpp/boost/benchmark.cpp create mode 100644 lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/julia/REQUIRE create mode 100755 lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/julia/benchmark.jl create mode 100644 lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/r/DESCRIPTION create mode 100755 lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/r/benchmark.R create mode 100644 lib/node_modules/@stdlib/math/base/special/sinpif/binding.gyp create mode 100644 lib/node_modules/@stdlib/math/base/special/sinpif/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/math/base/special/sinpif/docs/types/index.d.ts create mode 100644 lib/node_modules/@stdlib/math/base/special/sinpif/docs/types/test.ts create mode 100644 lib/node_modules/@stdlib/math/base/special/sinpif/examples/c/Makefile create mode 100644 lib/node_modules/@stdlib/math/base/special/sinpif/examples/c/example.c create mode 100644 lib/node_modules/@stdlib/math/base/special/sinpif/examples/index.js create mode 100644 lib/node_modules/@stdlib/math/base/special/sinpif/include.gypi create mode 100644 lib/node_modules/@stdlib/math/base/special/sinpif/include/stdlib/math/base/special/sinpi.h create mode 100644 lib/node_modules/@stdlib/math/base/special/sinpif/lib/index.js create mode 100644 lib/node_modules/@stdlib/math/base/special/sinpif/lib/main.js create mode 100644 lib/node_modules/@stdlib/math/base/special/sinpif/lib/native.js create mode 100644 lib/node_modules/@stdlib/math/base/special/sinpif/manifest.json create mode 100644 lib/node_modules/@stdlib/math/base/special/sinpif/package.json create mode 100644 lib/node_modules/@stdlib/math/base/special/sinpif/src/Makefile create mode 100644 lib/node_modules/@stdlib/math/base/special/sinpif/src/addon.c create mode 100644 lib/node_modules/@stdlib/math/base/special/sinpif/src/main.c create mode 100644 lib/node_modules/@stdlib/math/base/special/sinpif/test/fixtures/julia/REQUIRE create mode 100644 lib/node_modules/@stdlib/math/base/special/sinpif/test/fixtures/julia/decimals.json create mode 100644 lib/node_modules/@stdlib/math/base/special/sinpif/test/fixtures/julia/integers.json create mode 100644 lib/node_modules/@stdlib/math/base/special/sinpif/test/fixtures/julia/runner.jl create mode 100644 lib/node_modules/@stdlib/math/base/special/sinpif/test/test.js create mode 100644 lib/node_modules/@stdlib/math/base/special/sinpif/test/test.native.js diff --git a/lib/node_modules/@stdlib/math/base/special/sinpif/README.md b/lib/node_modules/@stdlib/math/base/special/sinpif/README.md new file mode 100644 index 000000000000..b94fa78f78ce --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sinpif/README.md @@ -0,0 +1,191 @@ + + +# sinpi + +> Compute the [sine][@stdlib/math/base/special/sin] of a number times [π][@stdlib/constants/float64/pi]. + +
+ +## Usage + +```javascript +var sinpi = require( '@stdlib/math/base/special/sinpi' ); +``` + +#### sinpi( x ) + +Computes `sin(πx)` more accurately than `sin(pi*x)`, especially for large `x`. + +```javascript +var y = sinpi( 0.0 ); +// returns 0.0 + +y = sinpi( 0.5 ); +// returns 1.0 + +y = sinpi( 0.9 ); +// returns ~0.309 + +y = sinpi( NaN ); +// returns NaN +``` + +
+ + + +
+ +## Examples + + + +```javascript +var uniform = require( '@stdlib/random/array/uniform' ); +var logEachMap = require( '@stdlib/console/log-each-map' ); +var sinpi = require( '@stdlib/math/base/special/sinpi' ); + +var opts = { + 'dtype': 'float64' +}; +var x = uniform( 100, -100.0, 100.0, opts ); + +logEachMap( 'sin( π * %0.4f ) = %0.4f', x, sinpi ); +``` + +
+ + + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/math/base/special/sinpi.h" +``` + +#### stdlib_base_sinpi( x ) + +Computes `sin(πx)` more accurately than `sin(pi*x)`, especially for large `x`. + +```c +double y = stdlib_base_sinpi( 0.5 ); +// returns 1.0 +``` + +The function accepts the following arguments: + +- **x**: `[in] double` input value. + +```c +double stdlib_base_sinpi( const double x ); +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/math/base/special/sinpi.h" +#include + +int main( void ) { + const double x[] = { 0.0, 0.523, 0.785, 1.047, 3.14 }; + + double y; + int i; + for ( i = 0; i < 5; i++ ) { + y = stdlib_base_sinpi( x[ i ] ); + printf( "sinpi(%lf) = %lf\n", x[ i ], y ); + } +} +``` + +
+ + + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/benchmark.js b/lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/benchmark.js new file mode 100644 index 000000000000..78e6705216c8 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/benchmark.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pkg = require( './../package.json' ).name; +var sinpi = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var x; + var y; + var i; + + x = uniform( 100, -5.0e6, 5.0e6 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = sinpi( x[ i%x.length ] ); + if ( isnan( y ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( y ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/benchmark.native.js new file mode 100644 index 000000000000..3a4060ec1b4f --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/benchmark.native.js @@ -0,0 +1,61 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var sinpi = tryRequire( resolve( __dirname, './../lib/native.js' ) ); +var opts = { + 'skip': ( sinpi instanceof Error ) +}; + + +// MAIN // + +bench( pkg+'::native', opts, function benchmark( b ) { + var x; + var y; + var i; + + x = uniform( 100, -5.0e6, 5.0e6 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = sinpi( x[ i%x.length ] ); + if ( isnan( y ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( y ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/c/native/Makefile b/lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/c/native/Makefile new file mode 100644 index 000000000000..f69e9da2b4d3 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/c/native/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2024 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := benchmark.out + + +# RULES # + +#/ +# Compiles source files. +# +# @param {string} [C_COMPILER] - C compiler (e.g., `gcc`) +# @param {string} [CFLAGS] - C compiler options +# @param {(string|void)} [fPIC] - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} [INCLUDE] - list of includes (e.g., `-I /foo/bar -I /beep/boop/include`) +# @param {string} [SOURCE_FILES] - list of source files +# @param {string} [LIBPATH] - list of library paths (e.g., `-L /foo/bar -L /beep/boop`) +# @param {string} [LIBRARIES] - list of libraries (e.g., `-lopenblas -lpthread`) +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler (e.g., `gcc`) +# @param {string} CFLAGS - C compiler options +# @param {(string|void)} fPIC - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} INCLUDE - list of includes (e.g., `-I /foo/bar`) +# @param {string} SOURCE_FILES - list of source files +# @param {string} LIBPATH - list of library paths (e.g., `-L /foo/bar`) +# @param {string} LIBRARIES - list of libraries (e.g., `-lopenblas`) +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) $(fPIC) $(INCLUDE) -o $@ $(SOURCE_FILES) $< $(LIBPATH) -lm $(LIBRARIES) + +#/ +# Runs compiled benchmarks. +# +# @example +# make run +#/ +run: $(c_targets) + $(QUIET) ./$< + +.PHONY: run + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/c/native/benchmark.c b/lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/c/native/benchmark.c new file mode 100644 index 000000000000..8e45fdf0a742 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/c/native/benchmark.c @@ -0,0 +1,136 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/math/base/special/sinpi.h" +#include +#include +#include +#include +#include + +#define NAME "sinpi" +#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 passinpig total number of passinpig tests +*/ +void print_summary( int total, int passinpig ) { + printf( "#\n" ); + printf( "1..%d\n", total ); // TAP plan + printf( "# total %d\n", total ); + printf( "# pass %d\n", passinpig ); + 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 double rand_double( void ) { + int r = rand(); + return (double)r / ( (double)RAND_MAX + 1.0 ); +} + +/** +* Runs a benchmark. +* +* @return elapsed time in seconds +*/ +static double benchmark( void ) { + double x[ 100 ]; + double elapsed; + double y; + double t; + int i; + + for ( i = 0; i < 100; i++ ) { + x[ i ] = ( 1.0e7 * rand_double() ) - 5.0e6; + } + + t = tic(); + for ( i = 0; i < ITERATIONS; i++ ) { + y = stdlib_base_sinpi( 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/sinpif/benchmark/cpp/boost/Makefile b/lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/cpp/boost/Makefile new file mode 100644 index 000000000000..ba3ed4330d65 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/cpp/boost/Makefile @@ -0,0 +1,110 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2018 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT 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 := @ +endif + +# Specify the path to Boost: +BOOST ?= + +# Determine the OS: +# +# [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 +endif +endif +endif + +# Define the program used for compiling C++ source files: +ifdef CXX_COMPILER + CXX := $(CXX_COMPILER) +else + CXX := g++ +endif + +# Define the command-line options when compiling C++ files: +CXXFLAGS ?= \ + -std=c++11 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate [position independent code][1]: +# +# [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 C++ targets: +cxx_targets := benchmark.out + + +# TARGETS # + +# Default target. +# +# This target is the default target. + +all: $(cxx_targets) + +.PHONY: all + + +# Compile C++ source. +# +# This target compiles C++ source files. + +$(cxx_targets): %.out: %.cpp $(BOOST) + $(QUIET) $(CXX) $(CXXFLAGS) $(fPIC) -I $(BOOST) -o $@ $< -lm + + +# Run a benchmark. +# +# This target runs a benchmark. + +run: $(cxx_targets) + $(QUIET) ./$< + +.PHONY: run + + +# Perform clean-up. +# +# This target removes generated files. + +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/cpp/boost/benchmark.cpp b/lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/cpp/boost/benchmark.cpp new file mode 100644 index 000000000000..5e00cea1d465 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/cpp/boost/benchmark.cpp @@ -0,0 +1,132 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include +#include +#include +#include +#include +#include +#include +#include + +using boost::random::uniform_real_distribution; +using boost::random::mt19937; + +#define NAME "sinpi" +#define ITERATIONS 1000000 +#define REPEATS 3 + +/** +* Prints the TAP version. +*/ +void print_version() { + printf( "TAP version 13\n" ); +} + +/** +* Prints the TAP summary. +* +* @param total total number of tests +* @param passing total number of passing tests +*/ +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 +*/ +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 +*/ +double tic() { + struct timeval now; + gettimeofday( &now, NULL ); + return (double)now.tv_sec + (double)now.tv_usec/1.0e6; +} + +/** +* Runs a benchmark. +* +* @return elapsed time in seconds +*/ +double benchmark() { + double elapsed; + double x; + double y; + double t; + int i; + + // Define a new pseudorandom number generator: + mt19937 rng; + + // Define a uniform distribution for generating pseudorandom numbers as "doubles" between a minimum value (inclusive) and a maximum value (exclusive): + uniform_real_distribution<> randu( -5.0e6, 5.0e6 ); + + t = tic(); + for ( i = 0; i < ITERATIONS; i++ ) { + x = randu( rng ); + y = boost::math::sin_pi( x ); + 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; + + print_version(); + for ( i = 0; i < REPEATS; i++ ) { + printf( "# cpp::boost::%s\n", NAME ); + elapsed = benchmark(); + print_results( elapsed ); + printf( "ok %d benchmark finished\n", i+1 ); + } + print_summary( REPEATS, REPEATS ); + return 0; +} diff --git a/lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/julia/REQUIRE b/lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/julia/REQUIRE new file mode 100644 index 000000000000..98645e192e41 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/julia/REQUIRE @@ -0,0 +1,2 @@ +julia 1.5 +BenchmarkTools 0.5.0 diff --git a/lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/julia/benchmark.jl b/lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/julia/benchmark.jl new file mode 100755 index 000000000000..21fcda8b5301 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/julia/benchmark.jl @@ -0,0 +1,144 @@ +#!/usr/bin/env julia +# +# @license Apache-2.0 +# +# Copyright (c) 2018 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT 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 BenchmarkTools +using Printf + +# Benchmark variables: +name = "sinpi"; +repeats = 3; + +""" + print_version() + +Prints the TAP version. + +# Examples + +``` julia +julia> print_version() +``` +""" +function print_version() + @printf( "TAP version 13\n" ); +end + +""" + print_summary( total, passing ) + +Print the benchmark summary. + +# Arguments + +* `total`: total number of tests +* `passing`: number of passing tests + +# Examples + +``` julia +julia> print_summary( 3, 3 ) +``` +""" +function print_summary( total, 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" ); +end + +""" + print_results( iterations, elapsed ) + +Print benchmark results. + +# Arguments + +* `iterations`: number of iterations +* `elapsed`: elapsed time (in seconds) + +# Examples + +``` julia +julia> print_results( 1000000, 0.131009101868 ) +``` +""" +function print_results( iterations, elapsed ) + rate = iterations / elapsed + + @printf( " ---\n" ); + @printf( " iterations: %d\n", iterations ); + @printf( " elapsed: %0.9f\n", elapsed ); + @printf( " rate: %0.9f\n", rate ); + @printf( " ...\n" ); +end + +""" + benchmark() + +Run a benchmark. + +# Notes + +* Benchmark results are returned as a two-element array: [ iterations, elapsed ]. +* The number of iterations is not the true number of iterations. Instead, an 'iteration' is defined as a 'sample', which is a computed estimate for a single evaluation. +* The elapsed time is in seconds. + +# Examples + +``` julia +julia> out = benchmark(); +``` +""" +function benchmark() + t = BenchmarkTools.@benchmark sinpi( (rand()*1.0e7) - 5.0e6 ) samples=1e6 + + # Compute the total "elapsed" time and convert from nanoseconds to seconds: + s = sum( t.times ) / 1.0e9; + + # Determine the number of "iterations": + iter = length( t.times ); + + # Return the results: + [ iter, s ]; +end + +""" + main() + +Run benchmarks. + +# Examples + +``` julia +julia> main(); +``` +""" +function main() + print_version(); + for i in 1:repeats + @printf( "# julia::%s\n", name ); + results = benchmark(); + print_results( results[ 1 ], results[ 2 ] ); + @printf( "ok %d benchmark finished\n", i ); + end + print_summary( repeats, repeats ); +end + +main(); diff --git a/lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/r/DESCRIPTION b/lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/r/DESCRIPTION new file mode 100644 index 000000000000..289197d4394c --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/r/DESCRIPTION @@ -0,0 +1,9 @@ +Package: sinpi-benchmarks +Title: Benchmarks +Version: 0.0.0 +Authors@R: person("stdlib", "js", role = c("aut","cre")) +Description: Benchmarks. +Depends: R (>=3.4.0) +Imports: + microbenchmark +LazyData: true diff --git a/lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/r/benchmark.R b/lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/r/benchmark.R new file mode 100755 index 000000000000..f663c695492e --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/r/benchmark.R @@ -0,0 +1,109 @@ +#!/usr/bin/env Rscript +# +# @license Apache-2.0 +# +# Copyright (c) 2018 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Set the precision to 16 digits: +options( digits = 16L ); + +#' Run benchmarks. +#' +#' @examples +#' main(); +main <- function() { + # Define benchmark parameters: + name <- "sinpi"; + iterations <- 1000000L; + repeats <- 3L; + + #' Print the TAP version. + #' + #' @examples + #' print_version(); + print_version <- function() { + cat( "TAP version 13\n" ); + } + + #' Print the TAP summary. + #' + #' @param total Total number of tests. + #' @param passing Total number of passing tests. + #' + #' @examples + #' print_summary( 3, 3 ); + print_summary <- function( total, passing ) { + cat( "#\n" ); + cat( paste0( "1..", total, "\n" ) ); # TAP plan + cat( paste0( "# total ", total, "\n" ) ); + cat( paste0( "# pass ", passing, "\n" ) ); + cat( "#\n" ); + cat( "# ok\n" ); + } + + #' Print benchmark results. + #' + #' @param iterations Number of iterations. + #' @param elapsed Elapsed time in seconds. + #' + #' @examples + #' print_results( 10000L, 0.131009101868 ); + print_results <- function( iterations, elapsed ) { + rate <- iterations / elapsed; + cat( " ---\n" ); + cat( paste0( " iterations: ", iterations, "\n" ) ); + cat( paste0( " elapsed: ", elapsed, "\n" ) ); + cat( paste0( " rate: ", rate, "\n" ) ); + cat( " ...\n" ); + } + + #' Run a benchmark. + #' + #' ## Notes + #' + #' * We compute and return a total "elapsed" time, rather than the minimum + #' evaluation time, to match benchmark results in other languages (e.g., + #' Python). + #' + #' + #' @param iterations Number of Iterations. + #' @return Elapsed time in seconds. + #' + #' @examples + #' elapsed <- benchmark( 10000L ); + benchmark <- function( iterations ) { + # Run the benchmarks: + results <- microbenchmark::microbenchmark( sinpi( (1.0e7*runif(1)) - 5.0e6 ), times = iterations ); + + # Sum all the raw timing results to get a total "elapsed" time: + elapsed <- sum( results$time ); + + # Convert the elapsed time from nanoseconds to seconds: + elapsed <- elapsed / 1.0e9; + + return( elapsed ); + } + + print_version(); + for ( i in 1:repeats ) { + cat( paste0( "# r::", name, "\n" ) ); + elapsed <- benchmark( iterations ); + print_results( iterations, elapsed ); + cat( paste0( "ok ", i, " benchmark finished", "\n" ) ); + } + print_summary( repeats, repeats ); +} + +main(); diff --git a/lib/node_modules/@stdlib/math/base/special/sinpif/binding.gyp b/lib/node_modules/@stdlib/math/base/special/sinpif/binding.gyp new file mode 100644 index 000000000000..ec3992233442 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sinpif/binding.gyp @@ -0,0 +1,170 @@ +# @license Apache-2.0 +# +# Copyright (c) 2024 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A `.gyp` file for building a Node.js native add-on. +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # List of files to include in this file: + 'includes': [ + './include.gypi', + ], + + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Target name should match the add-on export name: + 'addon_target_name%': 'addon', + + # Set variables based on the host OS: + 'conditions': [ + [ + 'OS=="win"', + { + # Define the object file suffix: + 'obj': 'obj', + }, + { + # Define the object file suffix: + 'obj': 'o', + } + ], # end condition (OS=="win") + ], # end conditions + }, # end variables + + # Define compile targets: + 'targets': [ + + # Target to generate an add-on: + { + # The target name should match the add-on export name: + 'target_name': '<(addon_target_name)', + + # Define dependencies: + 'dependencies': [], + + # Define directories which contain relevant include headers: + 'include_dirs': [ + # Local include directory: + '<@(include_dirs)', + ], + + # List of source files: + 'sources': [ + '<@(src_files)', + ], + + # Settings which should be applied when a target's object files are used as linker input: + 'link_settings': { + # Define libraries: + 'libraries': [ + '<@(libraries)', + ], + + # Define library directories: + 'library_dirs': [ + '<@(library_dirs)', + ], + }, + + # C/C++ compiler flags: + 'cflags': [ + # Enable commonly used warning options: + '-Wall', + + # Aggressive optimization: + '-O3', + ], + + # C specific compiler flags: + 'cflags_c': [ + # Specify the C standard to which a program is expected to conform: + '-std=c99', + ], + + # C++ specific compiler flags: + 'cflags_cpp': [ + # Specify the C++ standard to which a program is expected to conform: + '-std=c++11', + ], + + # Linker flags: + 'ldflags': [], + + # Apply conditions based on the host OS: + 'conditions': [ + [ + 'OS=="mac"', + { + # Linker flags: + 'ldflags': [ + '-undefined dynamic_lookup', + '-Wl,-no-pie', + '-Wl,-search_paths_first', + ], + }, + ], # end condition (OS=="mac") + [ + 'OS!="win"', + { + # C/C++ flags: + 'cflags': [ + # Generate platform-independent code: + '-fPIC', + ], + }, + ], # end condition (OS!="win") + ], # end conditions + }, # end target <(addon_target_name) + + # Target to copy a generated add-on to a standard location: + { + 'target_name': 'copy_addon', + + # Declare that the output of this target is not linked: + 'type': 'none', + + # Define dependencies: + 'dependencies': [ + # Require that the add-on be generated before building this target: + '<(addon_target_name)', + ], + + # Define a list of actions: + 'actions': [ + { + 'action_name': 'copy_addon', + 'message': 'Copying addon...', + + # Explicitly list the inputs in the command-line invocation below: + 'inputs': [], + + # Declare the expected outputs: + 'outputs': [ + '<(addon_output_dir)/<(addon_target_name).node', + ], + + # Define the command-line invocation: + 'action': [ + 'cp', + '<(PRODUCT_DIR)/<(addon_target_name).node', + '<(addon_output_dir)/<(addon_target_name).node', + ], + }, + ], # end actions + }, # end target copy_addon + ], # end targets +} diff --git a/lib/node_modules/@stdlib/math/base/special/sinpif/docs/repl.txt b/lib/node_modules/@stdlib/math/base/special/sinpif/docs/repl.txt new file mode 100644 index 000000000000..716582e413d0 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sinpif/docs/repl.txt @@ -0,0 +1,31 @@ + +{{alias}}( x ) + Computes the value of `sin(πx)`. + + The function computes `sin(πx)` more accurately than the obvious approach, + especially for large `x`. + + Parameters + ---------- + x: number + Input value. + + Returns + ------- + y: number + Function value. + + Examples + -------- + > var y = {{alias}}( 0.0 ) + 0.0 + > y = {{alias}}( 0.5 ) + 1.0 + > y = {{alias}}( 0.9 ) + ~0.309 + > y = {{alias}}( NaN ) + NaN + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/math/base/special/sinpif/docs/types/index.d.ts b/lib/node_modules/@stdlib/math/base/special/sinpif/docs/types/index.d.ts new file mode 100644 index 000000000000..19d8cc557594 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sinpif/docs/types/index.d.ts @@ -0,0 +1,52 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2019 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT 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 value of `sin(πx)`. +* +* ## Notes +* +* - The function computes `sin(πx)` more accurately than the obvious approach, especially for large `x`. +* +* @param x - input value +* @returns function value +* +* @example +* var y = sinpi( 0.0 ); +* // returns 0.0 +* +* @example +* var y = sinpi( 0.5 ); +* // returns 1.0 +* +* @example +* var y = sinpi( 0.9 ); +* // returns ~0.309 +* +* @example +* var y = sinpi( NaN ); +* // returns NaN +*/ +declare function sinpi( x: number ): number; + + +// EXPORTS // + +export = sinpi; diff --git a/lib/node_modules/@stdlib/math/base/special/sinpif/docs/types/test.ts b/lib/node_modules/@stdlib/math/base/special/sinpif/docs/types/test.ts new file mode 100644 index 000000000000..0f291356cac4 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sinpif/docs/types/test.ts @@ -0,0 +1,44 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2019 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT 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 sinpi = require( './index' ); + + +// TESTS // + +// The function returns a number... +{ + sinpi( 2 ); // $ExpectType number +} + +// The compiler throws an error if the function is provided a value other than a number... +{ + sinpi( true ); // $ExpectError + sinpi( false ); // $ExpectError + sinpi( null ); // $ExpectError + sinpi( undefined ); // $ExpectError + sinpi( '5' ); // $ExpectError + sinpi( [] ); // $ExpectError + sinpi( {} ); // $ExpectError + sinpi( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided insufficient arguments... +{ + sinpi(); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/math/base/special/sinpif/examples/c/Makefile b/lib/node_modules/@stdlib/math/base/special/sinpif/examples/c/Makefile new file mode 100644 index 000000000000..6aed70daf167 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sinpif/examples/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2024 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := example.out + + +# RULES # + +#/ +# Compiles source files. +# +# @param {string} [C_COMPILER] - C compiler (e.g., `gcc`) +# @param {string} [CFLAGS] - C compiler options +# @param {(string|void)} [fPIC] - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} [INCLUDE] - list of includes (e.g., `-I /foo/bar -I /beep/boop/include`) +# @param {string} [SOURCE_FILES] - list of source files +# @param {string} [LIBPATH] - list of library paths (e.g., `-L /foo/bar -L /beep/boop`) +# @param {string} [LIBRARIES] - list of libraries (e.g., `-lopenblas -lpthread`) +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler (e.g., `gcc`) +# @param {string} CFLAGS - C compiler options +# @param {(string|void)} fPIC - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} INCLUDE - list of includes (e.g., `-I /foo/bar`) +# @param {string} SOURCE_FILES - list of source files +# @param {string} LIBPATH - list of library paths (e.g., `-L /foo/bar`) +# @param {string} LIBRARIES - list of libraries (e.g., `-lopenblas`) +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) $(fPIC) $(INCLUDE) -o $@ $(SOURCE_FILES) $< $(LIBPATH) -lm $(LIBRARIES) + +#/ +# Runs compiled examples. +# +# @example +# make run +#/ +run: $(c_targets) + $(QUIET) ./$< + +.PHONY: run + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/math/base/special/sinpif/examples/c/example.c b/lib/node_modules/@stdlib/math/base/special/sinpif/examples/c/example.c new file mode 100644 index 000000000000..47e3f5b82efb --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sinpif/examples/c/example.c @@ -0,0 +1,31 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/math/base/special/sinpi.h" +#include + +int main( void ) { + const double x[] = { 0.0, 0.523, 0.785, 1.047, 3.14 }; + + double y; + int i; + for ( i = 0; i < 5; i++ ) { + y = stdlib_base_sinpi( x[ i ] ); + printf( "sinpi(%lf) = %lf\n", x[ i ], y ); + } +} diff --git a/lib/node_modules/@stdlib/math/base/special/sinpif/examples/index.js b/lib/node_modules/@stdlib/math/base/special/sinpif/examples/index.js new file mode 100644 index 000000000000..8a17e395b917 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sinpif/examples/index.js @@ -0,0 +1,30 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var uniform = require( '@stdlib/random/array/uniform' ); +var logEachMap = require( '@stdlib/console/log-each-map' ); +var sinpi = require( './../lib' ); + +var opts = { + 'dtype': 'float64' +}; +var x = uniform( 100, -100.0, 100.0, opts ); + +logEachMap( 'sin( π * %0.4f ) = %0.4f', x, sinpi ); diff --git a/lib/node_modules/@stdlib/math/base/special/sinpif/include.gypi b/lib/node_modules/@stdlib/math/base/special/sinpif/include.gypi new file mode 100644 index 000000000000..575cb043c0bf --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sinpif/include.gypi @@ -0,0 +1,53 @@ +# @license Apache-2.0 +# +# Copyright (c) 2024 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A GYP include file for building a Node.js native add-on. +# +# Main documentation: +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Source directory: + 'src_dir': './src', + + # Include directories: + 'include_dirs': [ + '=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "math.sin", + "sin", + "sine", + "pi", + "trig", + "trigonometry", + "radians", + "angle" + ] +} diff --git a/lib/node_modules/@stdlib/math/base/special/sinpif/src/Makefile b/lib/node_modules/@stdlib/math/base/special/sinpif/src/Makefile new file mode 100644 index 000000000000..bcf18aa46655 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sinpif/src/Makefile @@ -0,0 +1,70 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2024 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + + +# RULES # + +#/ +# Removes generated files for building an add-on. +# +# @example +# make clean-addon +#/ +clean-addon: + $(QUIET) -rm -f *.o *.node + +.PHONY: clean-addon + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: clean-addon + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/math/base/special/sinpif/src/addon.c b/lib/node_modules/@stdlib/math/base/special/sinpif/src/addon.c new file mode 100644 index 000000000000..a9252951db95 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sinpif/src/addon.c @@ -0,0 +1,22 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/math/base/special/sinpi.h" +#include "stdlib/math/base/napi/unary.h" + +STDLIB_MATH_BASE_NAPI_MODULE_D_D( stdlib_base_sinpi ) diff --git a/lib/node_modules/@stdlib/math/base/special/sinpif/src/main.c b/lib/node_modules/@stdlib/math/base/special/sinpif/src/main.c new file mode 100644 index 000000000000..4267f2b1722e --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sinpif/src/main.c @@ -0,0 +1,80 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/math/base/special/sinpi.h" +#include "stdlib/math/base/assert/is_nan.h" +#include "stdlib/math/base/assert/is_infinite.h" +#include "stdlib/math/base/special/cos.h" +#include "stdlib/math/base/special/sin.h" +#include "stdlib/math/base/special/abs.h" +#include "stdlib/math/base/special/copysign.h" +#include "stdlib/math/base/special/fmod.h" +#include "stdlib/constants/float64/pi.h" + +/** +* Computes the value of `sin(πx)`. +* +* ## Notes +* +* - `sin(-x) = -sin(x)` +* - `sin(+n) = +0`, where `n` is a positive integer +* - `sin(-n) = -sin(+n) = -0`, where `n` is a positive integer +* - `cos(-x) = cos(x)` +* +* @param x input value +* @return function value +* +* @example +* double y = stdlib_base_sinpi( 0.5 ); +* // returns 1.0 +*/ +double stdlib_base_sinpi( const double x ) { + double ar; + double r; + if ( stdlib_base_is_nan( x ) || stdlib_base_is_infinite( x ) ) { + return 0.0 / 0.0; // NaN + } + + // Argument reduction (reduce to [0,2))... + r = stdlib_base_fmod( x, 2.0 ); // sign preserving + ar = stdlib_base_abs( r ); + + // If `x` is an integer, the mod is an integer... + if ( ar == 0.0 || ar == 1.0 ) { + return stdlib_base_copysign( 0.0, r ); + } + if ( ar < 0.25 ) { + return stdlib_base_sin( STDLIB_CONSTANT_FLOAT64_PI * r ); + } + + // In each of the following, we further reduce to [-π/4,π/4)... + if ( ar < 0.75 ) { + ar = 0.5 - ar; + return stdlib_base_copysign( stdlib_base_cos( STDLIB_CONSTANT_FLOAT64_PI * ar ), r ); + } + if ( ar < 1.25 ) { + r = stdlib_base_copysign( 1.0, r ) - r; + return stdlib_base_sin( STDLIB_CONSTANT_FLOAT64_PI * r ); + } + if ( ar < 1.75 ) { + ar -= 1.5; + return -stdlib_base_copysign( stdlib_base_cos( STDLIB_CONSTANT_FLOAT64_PI * ar ), r ); + } + r -= stdlib_base_copysign( 2.0, r ); + return stdlib_base_sin( STDLIB_CONSTANT_FLOAT64_PI * r ); +} diff --git a/lib/node_modules/@stdlib/math/base/special/sinpif/test/fixtures/julia/REQUIRE b/lib/node_modules/@stdlib/math/base/special/sinpif/test/fixtures/julia/REQUIRE new file mode 100644 index 000000000000..308c3be89c85 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sinpif/test/fixtures/julia/REQUIRE @@ -0,0 +1,2 @@ +julia 1.5 +JSON 0.21 diff --git a/lib/node_modules/@stdlib/math/base/special/sinpif/test/fixtures/julia/decimals.json b/lib/node_modules/@stdlib/math/base/special/sinpif/test/fixtures/julia/decimals.json new file mode 100644 index 000000000000..851e4bc85f83 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sinpif/test/fixtures/julia/decimals.json @@ -0,0 +1 @@ +{"expected":[-0.0,0.30871849442917204,0.5872773239766755,0.8084632147357804,0.9506678326991512,0.9999987687634074,0.9516367311567749,0.8103063569629751,0.5898146477066691,0.3117021206564178,0.0031384490471553766,-0.30573182735974125,-0.5847342156315931,-0.8066121092375382,-0.9496895702711083,-0.9999889188888583,-0.9525962561004394,-0.8121415177643543,-0.5923461618292225,-0.3146826766530981,-0.006276867180943299,0.30274214886645745,0.582185347720787,0.8047530587014282,0.9487019535084202,0.9999692192367803,0.9535463980789327,0.8139686790638443,0.5948718414092085,0.3176601330610744,0.009415223488300803,-0.29974948839731513,-0.579630745350245,-0.8028860814388872,-0.9477049921390001,-0.9999396700012125,-0.954487147733464,-0.8157878228640871,-0.5973916615689694,-0.32063446055273825,-0.012553487056773914,0.2967538754296807,0.5770704336825467,0.8010111958394297,0.9466986959828045,0.9999002714732118,0.9554184957977425,0.8175989312467226,0.5999055974885623,0.32360562983130103,0.015691626974822116,-0.29375533947004506,-0.5745044379364723,-0.7991284203704665,-0.9456830749517365,-0.9998510240408491,-0.9563404330981221,-0.8194019863725382,-0.6024136244060033,-0.3265736116310821,-0.018829612332122846,0.2907539100535624,0.571932783386789,0.7972377735771226,0.9446581390495483,0.9997919281892061,0.9572529505536113,0.8211969704816456,0.6049157176175115,0.329538376717797,0.02196741221987594,-0.28774961674401484,-0.5693554953640028,-0.7953392740820545,-0.9436238983717422,-0.9997229845003712,-0.9581560391760165,-0.8229838658936545,-0.6074118524777521,-0.3324998958888456,-0.025104995731063454,0.28474248913335115,0.5667725992541083,0.7934329405852673,0.9425803631054719,0.99964419365343,0.9590496900700175,0.8247626550078475,0.6099020044000798,0.3354581399735997,0.028242331960932638,-0.2817325568414375,-0.5641841204983399,-0.7915187918639297,-0.9415275435294412,-0.9995555564244644,-0.9599338944332539,-0.8265333203033537,-0.6123861488567803,-0.3384130798336903,-0.03137939000703252,0.2787198495157658,0.5615900845929197,0.7895968467721899,0.940465450013819,0.999457073686541,0.960808643556413,0.8282958443393202,0.6148642613793122,0.3413646863632527,0.03451613896969685,-0.2757043968311618,-0.5589905170888075,-0.7876671242409891,-0.9393940930200758,-0.9993487464097035,-0.9616739288233153,-0.8300502097550855,-0.617336317558548,-0.344312930489381,-0.037652547952303814,0.2726862284894928,0.5563854435914488,0.7857296432778755,0.9383134831009717,0.9992305756609635,0.9625297417109987,0.8317963992703485,0.6198022930450144,0.34725778317216266,0.04078858606158036,-0.2696653742193749,-0.553774889760522,-0.783784422966845,-0.9372236309003918,-0.9991025626042893,-0.9633760737898033,-0.8335343956853408,-0.6222621635490975,-0.3501992154051325,-0.04392422240790649,0.26664186377588034,0.5511588813096868,0.7818314824680417,0.9361245471532569,0.9989647085005952,0.9642129167234541,0.8352641818809945,0.6247159048414215,0.3531371982155163,0.047059426105619556,-0.26361572694024427,-0.5485374440063299,-0.7798708410177358,-0.9350162426854173,-0.9988170147077283,-0.965040262269143,-0.8369857408191116,-0.6271634927528776,-0.35607170266451643,-0.05019416627331841,0.2605869935195717,0.5459106036713489,0.7779025179280236,0.9338987284135464,0.9986594826804559,0.96585810227761,0.8386990555425073,0.6296049031750024,0.35900269984759653,0.05332841203416763,-0.25755569334654355,-0.543278386178749,-0.7759265325866641,-0.9327720153450331,-0.9984921139704505,-0.9666664286932241,-0.8404041091752745,-0.6320401120601798,-0.36193016089476654,-0.056462132516201684,0.254521856279123,0.5406408174556112,0.7739429044568894,0.9316361145778735,0.9983149102262749,0.9674652335540612,0.8421008849228038,0.6344690954218785,0.3648540569708668,0.05959529685262892,-0.25148551220026133,-0.5379979234816888,-0.7719516530772115,-0.9304910373005615,-0.998127873193366,-0.9682545089919732,-0.8437893660720462,-0.6368918293348873,-0.36777435927585245,-0.0627278741821357,0.24844669101764696,0.5353497302891878,0.7699527980612308,0.9293367947919784,0.9979310047140173,0.9690342472327087,0.845469535991654,0.639308289935552,0.3706910390450766,0.06585983364919032,-0.24540542266323764,-0.532696263962511,-0.767946359097443,-0.9281733984212822,-0.9977243067273611,-0.9698044405959231,-0.8471413781321435,-0.6417184534220092,-0.37360406754957415,-0.06899114440434695,0.24236173709322528,0.5300375506380012,0.7659323559490444,0.9270008596477952,0.9975077812693521,0.9705650814952992,0.8488048760260594,0.644122296054422,0.37651341609634437,0.07212177560450497,-0.23931566428756776,-0.5273736165036832,-0.7639108084537376,-0.9258191900208915,-0.9972814304727357,-0.9713161624386102,-0.8504600132881358,-0.6465197941552128,-0.3794190560286338,-0.07525169641339091,0.23626723424973708,0.5247044877990064,0.7618817365235365,0.9246284011798831,0.9970452565670442,0.972057676027794,0.8521067736154583,0.6489109241092967,0.3823209587262184,0.07838087600159495,-0.23321647700642364,-0.5220301908145859,-0.7598451601445696,-0.9234285048539221,-0.9967992618785643,-0.9727896149590257,-0.8537451407876243,-0.6512956623643151,-0.38521909560564427,-0.08150928354705277,0.23016342260724054,0.5193507518919442,0.7578010993768834,0.9222195128618174,0.9965434488303153,0.9735119720227899,0.8553750986669028,0.6536739854308662,0.38811343812067395,0.08463688823530453,-0.22710810112442764,-0.5166661974232509,-0.7557495743542451,-0.9210014371120199,-0.996277819942027,-0.9742247401039513,-0.8569966311983934,-0.6560458698827373,-0.39100395776232044,-0.08776365925979852,0.22405054265255533,0.5139765538510634,0.7536906052839726,0.9197742896024378,0.9960023778301138,0.9749279121818251,0.8586097224101844,0.6584112923571017,0.39389062605929287,0.09088956582219448,-0.22099077730822805,-0.511281847668066,-0.7516242124466196,-0.9185380824203351,-0.9957171252076493,-0.9756214813302458,-0.8602143564135102,-0.6607702295548835,-0.39677341457823556,-0.094014577132667,0.21792883522978768,0.5085821054168091,0.7495504161959506,0.9172928277422123,0.9954220648843395,0.9763054407176364,0.8618105174029077,0.6631226582407849,0.39965229492400844,0.09713866241020881,-0.21486474657701674,-0.5058773536894867,-0.7474692369586237,-0.9160385378336869,-0.9951171997664952,-0.9769797836070738,-0.8633981896563494,-0.6654685552436499,-0.4025272387399662,-0.10026179088293395,0.2117985415308412,0.5031676191275197,0.7453806952340184,0.9147752250493725,0.994802532857003,0.9776445033563576,0.8649773575354889,0.6678078974566588,0.4053982177082381,0.1033839317883809,-0.2087302502930333,-0.500452928421525,-0.743284811594034,-0.9135029018327567,-0.9944780672552967,-0.978299593418073,-0.8665480054856788,-0.670140661837556,-0.4082652035500067,-0.10650505437381554,0.20565990308595772,0.4977333083108983,0.741181606682887,0.9122215807160791,0.9941438061573254,0.9789450473396485,0.8681101180362147,0.6724668254088768,0.4111281680257862,0.10962512789653411,-0.20258753015209913,-0.4950087855835895,-0.7390711012169074,-0.9109312743202073,-0.9937997528555234,-0.9795808587634541,-0.8696636798004652,-0.6747863652581734,-0.4139870829357012,-0.11274412162416599,0.19951316175400458,0.4922793870758388,0.7369533159843348,0.9096319953545225,0.9934459107387787,0.9802070214268148,0.8712086754760229,0.6770992585382413,0.4168419201197433,0.11586200483495424,-0.19643682817389813,-0.4895451396719121,-0.7348282718451137,-0.9083237566167569,-0.9930822832923916,-0.980823529162086,-0.8727450898448553,-0.6794054824673437,-0.4196926514581305,-0.11897874681814691,0.19335855971331692,0.48680607030383655,0.7326959897306882,0.9070065709929229,0.9927088740980534,0.9814303758967495,0.8742729077734551,0.6817050143294363,0.4225392488714618,0.12209431687416648,-0.19027838669281266,-0.48406220595113497,-0.7305564906438106,-0.9056804514571496,-0.9923256868338024,-0.9820275556534294,-0.875792114212989,-0.6839978314743747,-0.4253816843210753,-0.12520868431500098,0.1871963394517625,0.4813135736405604,0.7284097956582741,0.9043454110715642,0.9919327252739926,0.9826150625499728,0.8773026941994455,0.6862839113182021,0.4282199298093039,0.12832181846446192,-0.18411244834798246,-0.4785602004458294,-0.7262559259187962,-0.9030014629861632,-0.9915299932892452,-0.9831928907995032,-0.8788046328537831,-0.6885632313432751,-0.43105395737975116,-0.131433688658575,0.1810267437574504,0.4758021134873758,0.7240949026407497,0.901648620438683,0.9911174948464274,0.9837610347104779,0.8802979153820655,0.6908357690985497,0.4338837391175667,0.13454426424574928,-0.1779392560740069,-0.4730393399320042,-0.7219267471099691,-0.9002868967544692,-0.990695234008602,-0.9843194886867439,-0.8817825270756503,-0.6931015021997865,-0.43670924714970105,-0.13765351458716774,0.17485001570905573,0.47027190699274063,0.7197514806825406,0.8989163053463557,0.9902632149349907,0.9848682472275927,0.88325845331127,0.6953604083297711,0.43953045364526044,0.14076140905706688,-0.17175905309128642,-0.467499841928486,-0.717569124784592,-0.897536859714493,-0.9898214418809321,-0.985407304927811,-0.8847256795512184,-0.6976124652385343,-0.44234733081566047,-0.14386791704303836,0.1686663986662865,0.464723172043767,0.7153797009120816,0.896148573446274,0.989369919197841,0.9859366564777494,0.8861841913434833,0.6998576507435548,0.4451598509149802,0.14697300794633056,-0.16557208289637354,-0.4619419246884674,-0.7131832306306021,-0.8947514602161611,-0.9889086513331644,-0.9864562966633511,-0.8876339743218887,-0.7020959427300415,-0.4479679862402155,-0.15007665118212787,0.16247613626020724,0.4591561272575584,0.7109797355751056,0.8933455337855614,0.988437642830342,0.9869662203662192,0.8890750142062368,0.7043273191510564,0.4507717091315515,0.15317881617994034,-0.1593785892525111,-0.456365807190829,-0.7087692374497843,-0.8919308080026906,-0.9879568983287474,-0.9874664225636629,-0.8905072968024378,-0.7065517580277942,-0.45357099197263556,-0.15627947238377216,0.15627947238377216,0.45357099197263556,0.7065517580277942,0.8905072968024378,0.9874664225636629,0.9879568983287474,0.8919308080026906,0.7087692374497843,0.456365807190829,0.1593785892525111,-0.15317881617994034,-0.4507717091315515,-0.7043273191510564,-0.8890750142062368,-0.9869662203662192,-0.988437642830342,-0.8933455337855614,-0.7109797355751056,-0.4591561272575584,-0.16247613626020724,0.15007665118212787,0.4479679862402155,0.7020959427300415,0.8876339743218887,0.9864562966633511,0.9889086513331644,0.8947514602161611,0.7131832306306021,0.4619419246884674,0.16557208289637354,-0.14697300794633056,-0.4451598509149802,-0.6998576507435548,-0.8861841913434833,-0.9859366564777494,-0.989369919197841,-0.896148573446274,-0.7153797009120816,-0.464723172043767,-0.1686663986662865,0.14386791704303836,0.44234733081566047,0.6976124652385343,0.8847256795512184,0.985407304927811,0.9898214418809321,0.897536859714493,0.717569124784592,0.467499841928486,0.17175905309128642,-0.14076140905706688,-0.43953045364526044,-0.6953604083297711,-0.88325845331127,-0.9848682472275927,-0.9902632149349907,-0.8989163053463557,-0.7197514806825406,-0.47027190699274063,-0.17485001570905573,0.13765351458716774,0.43670924714970105,0.6931015021997865,0.8817825270756503,0.9843194886867439,0.990695234008602,0.9002868967544692,0.7219267471099691,0.4730393399320042,0.1779392560740069,-0.13454426424574928,-0.4338837391175667,-0.6908357690985497,-0.8802979153820655,-0.9837610347104779,-0.9911174948464274,-0.901648620438683,-0.7240949026407497,-0.4758021134873758,-0.1810267437574504,0.131433688658575,0.43105395737975116,0.6885632313432751,0.8788046328537831,0.9831928907995032,0.9915299932892452,0.9030014629861632,0.7262559259187962,0.4785602004458294,0.18411244834798246,-0.12832181846446192,-0.4282199298093039,-0.6862839113182021,-0.8773026941994455,-0.9826150625499728,-0.9919327252739926,-0.9043454110715642,-0.7284097956582741,-0.4813135736405604,-0.1871963394517625,0.12520868431500098,0.4253816843210753,0.6839978314743747,0.875792114212989,0.9820275556534294,0.9923256868338024,0.9056804514571496,0.7305564906438106,0.48406220595113497,0.19027838669281266,-0.12209431687416648,-0.4225392488714618,-0.6817050143294363,-0.8742729077734551,-0.9814303758967495,-0.9927088740980534,-0.9070065709929229,-0.7326959897306882,-0.48680607030383655,-0.19335855971331692,0.11897874681814691,0.4196926514581305,0.6794054824673437,0.8727450898448553,0.980823529162086,0.9930822832923916,0.9083237566167569,0.7348282718451137,0.4895451396719121,0.19643682817389813,-0.11586200483495424,-0.4168419201197433,-0.6770992585382413,-0.8712086754760229,-0.9802070214268148,-0.9934459107387787,-0.9096319953545225,-0.7369533159843348,-0.4922793870758388,-0.19951316175400458,0.11274412162414381,0.4139870829357012,0.6747863652581734,0.8696636798004652,0.9795808587634587,0.9937997528555258,0.9109312743202073,0.7390711012169074,0.4950087855835895,0.20258753015207728,-0.10962512789651192,-0.4111281680257862,-0.6724668254088768,-0.8681101180362147,-0.978945047339653,-0.9941438061573279,-0.9122215807160791,-0.741181606682887,-0.4977333083108789,-0.20565990308593587,0.10650505437379335,0.4082652035500067,0.670140661837556,0.8665480054856899,0.9782995934180684,0.9944780672552991,0.9135029018327567,0.743284811594034,0.5004529284215057,0.20873025029305514,-0.1033839317883809,-0.4053982177082381,-0.6678078974566588,-0.8649773575355001,-0.9776445033563528,-0.994802532857003,-0.9147752250493725,-0.7453806952340184,-0.5031676191275005,-0.21179854153086303,0.10026179088292284,0.4025272387399662,0.6654685552436582,0.8633981896563607,0.9769797836070715,0.9951171997664963,0.9160385378336869,0.7474692369586162,0.5058773536894675,0.21486474657702764,-0.09713866241020881,-0.39965229492400844,-0.6631226582407933,-0.8618105174028964,-0.9763054407176339,-0.9954220648843395,-0.9172928277422079,-0.7495504161959432,-0.5085821054168284,-0.21792883522979858,0.094014577132667,0.39677341457824583,0.6607702295549003,0.8602143564134987,0.9756214813302434,0.9957171252076493,0.9185380824203306,0.7516242124466049,0.5112818476680852,0.22099077730823893,-0.09088956582219448,-0.39389062605930314,-0.6584112923571186,-0.8586097224101786,-0.9749279121818225,-0.9960023778301138,-0.9197742896024335,-0.7536906052839579,-0.513976553851073,-0.22405054265255533,0.08776365925979852,0.3910039577623307,0.6560458698827204,0.8569966311983876,0.9742247401039513,0.996277819942026,0.9210014371120155,0.7557495743542596,0.5166661974232606,0.22710810112442764,-0.08463688823531566,-0.3881134381206842,-0.6536739854308493,-0.855375098666897,-0.9735119720227899,-0.9965434488303143,-0.9222195128618087,-0.757801099376898,-0.5193507518919538,-0.23016342260724054,0.08150928354706388,0.38521909560566486,0.6512956623643067,0.8537451407876185,0.9727896149590257,0.9967992618785634,0.9234285048539135,0.7598451601445768,0.5220301908145859,0.23321647700642364,-0.07838087600160608,-0.3823209587261978,-0.6489109241092883,-0.8521067736154583,-0.9720576760277966,-0.9970452565670435,-0.9246284011798915,-0.7618817365235436,-0.5247044877990064,-0.23626723424972623,0.07525169641340204,0.37941905602861314,0.6465197941552042,0.8504600132881358,0.9713161624386129,0.997281430472734,0.9258191900209,0.7639108084537448,0.5273736165036832,0.23931566428755693,-0.07212177560452723,-0.37651341609633404,-0.6441222960544134,-0.8488048760260594,-0.9705650814953019,-0.9975077812693506,-0.9270008596477993,-0.7659323559490444,-0.5300375506380012,-0.24236173709321446,0.06899114440432468,0.3736040675495638,0.6417184534220092,0.8471413781321494,0.9698044405959259,0.9977243067273626,0.9281733984212863,0.767946359097443,0.5326962639625016,0.24540542266322685,-0.06585983364916805,-0.37069103904506623,-0.639308289935552,-0.8454695359916599,-0.9690342472327141,-0.9979310047140187,-0.9293367947919825,-0.7699527980612308,-0.5353497302891783,-0.24844669101762534,0.06272787418212455,0.36777435927584207,0.6368918293348873,0.8437893660720522,0.9682545089919787,0.9981278731933667,0.9304910373005615,0.7719516530772115,0.5379979234816794,0.2514855122002829,-0.05959529685261778,-0.3648540569708668,-0.6344690954218785,-0.8421008849228098,-0.9674652335540556,-0.9983149102262755,-0.9316361145778735,-0.7739429044568823,-0.5406408174556019,-0.2545218562791446,0.05646213251619054,0.36193016089476654,0.6320401120601885,0.8404041091752866,0.9666664286932183,0.9984921139704511,0.9327720153450331,0.7759265325866571,0.5432783861787303,0.2575556933465543,-0.05332841203415649,-0.35900269984759653,-0.629604903175011,-0.8386990555425194,-0.9658581022776072,-0.9986594826804559,-0.9338987284135464,-0.7779025179280166,-0.5459106036713303,-0.2605869935195825,0.05019416627331283,0.35607170266452165,0.6271634927528906,0.8369857408190994,0.9650402622691401,0.9988170147077283,0.9350162426854153,0.7798708410177254,0.5485374440063439,0.26361572694025504,-0.047059426105619556,-0.35313719821552675,-0.6247159048414345,-0.8352641818809853,-0.9642129167234511,-0.9989647085005952,-0.936124547153253,-0.7818314824680312,-0.5511588813097008,-0.26664186377588567,0.04392422240790649,0.3501992154051429,0.6222621635491149,0.8335343956853316,0.9633760737898018,0.9991025626042891,0.937223630900388,0.7837844229668312,0.5537748897605314,0.2696653742193803,-0.04078858606158593,-0.34725778317217837,-0.6198022930449969,-0.8317963992703424,-0.9625297417109987,-0.9992305756609633,-0.9383134831009659,-0.785729643277886,-0.556385443591458,-0.2726862284894928,0.03765254795230939,0.3443129304893967,0.6173363175585348,0.8300502097550793,0.9616739288233153,0.9993487464097032,0.93939409302007,0.7876671242409994,0.5589905170888122,0.2757043968311618,-0.034516138969708,-0.34136468636327366,-0.614864261379299,-0.8282958443393171,-0.9608086435564146,-0.9994570736865406,-0.9404654500138114,-0.7895968467721968,-0.5615900845929243,-0.27871984951576045,0.03137939000704925,0.3384130798336693,0.6123861488567715,0.8265333203033537,0.9599338944332555,0.9995555564244639,0.9415275435294487,0.7915187918639366,0.5641841204983399,0.2817325568414321,-0.02824233196094937,-0.3354581399735839,-0.6099020044000709,-0.8247626550078475,-0.9590496900700206,-0.9996441936534296,-0.9425803631054774,-0.7934329405852707,-0.5667725992541083,-0.2847424891333405,0.02510499573108298,0.33249989588883244,0.6074118524777476,0.822983865893656,0.9581560391760205,0.9997229845003707,0.9436238983717469,0.7953392740820578,0.5693554953639981,0.2877496167440015,-0.021967412219853624,-0.32953837671778646,-0.6049157176175093,-0.8211969704816487,-0.957252950553616,-0.9997919281892065,-0.944658139049552,-0.7972377735771226,-0.5719327833867822,-0.29075391005354634,0.01882961233210332,0.3265736116310742,0.6024136244060033,0.8194019863725431,0.9563404330981278,0.9998510240408495,0.9456830749517393,0.7991284203704648,0.5745044379364632,0.2937553394700264,-0.01569162697480817,-0.32360562983129576,-0.5999055974885645,-0.817598931246729,-0.9554184957977492,-0.999900271473212,-0.9466986959828063,-0.8010111958394264,-0.5770704336825353,-0.296753875429702,0.012553487056761358,0.3206344605527356,0.597391661568975,0.815787822864096,0.9544871477334581,0.9999396700012126,0.9477049921390005,0.8028860814388822,0.5796307453502313,0.2997494883973324,-0.009415223488291038,-0.3176601330610744,-0.5948718414092162,-0.8139686790638548,-0.9535463980789276,-0.9999692192367803,-0.9487019535084197,-0.8047530587014216,-0.5821853477207711,-0.3027421488664721,0.006276867180937021,0.31468267665310146,0.5923461618292326,0.8121415177643669,0.9525962561004352,0.9999889188888583,0.9496895702711068,0.80661210923753,0.5847342156316107,0.3057318273597532,-0.0031384490471522376,-0.3117021206564237,-0.5898146477066815,-0.8103063569629635,-0.9516367311567716,-0.9999987687634074,-0.9506678326991489,-0.8084632147357704,-0.5872773239766905,-0.30871849442918087,0.0,0.30871849442918087,0.5872773239766905,0.8084632147357704,0.9506678326991489,0.9999987687634074,0.9516367311567716,0.8103063569629635,0.5898146477066815,0.3117021206564237,0.0031384490471522376,-0.3057318273597532,-0.5847342156316107,-0.80661210923753,-0.9496895702711068,-0.9999889188888583,-0.9525962561004352,-0.8121415177643669,-0.5923461618292326,-0.31468267665310146,-0.006276867180937021,0.3027421488664721,0.5821853477207711,0.8047530587014216,0.9487019535084197,0.9999692192367803,0.9535463980789276,0.8139686790638548,0.5948718414092162,0.3176601330610744,0.009415223488291038,-0.2997494883973324,-0.5796307453502313,-0.8028860814388822,-0.9477049921390005,-0.9999396700012126,-0.9544871477334581,-0.815787822864096,-0.597391661568975,-0.3206344605527356,-0.012553487056761358,0.296753875429702,0.5770704336825353,0.8010111958394264,0.9466986959828063,0.999900271473212,0.9554184957977492,0.817598931246729,0.5999055974885645,0.32360562983129576,0.01569162697480817,-0.2937553394700264,-0.5745044379364632,-0.7991284203704648,-0.9456830749517393,-0.9998510240408495,-0.9563404330981278,-0.8194019863725431,-0.6024136244060033,-0.3265736116310742,-0.01882961233210332,0.29075391005354634,0.5719327833867822,0.7972377735771226,0.944658139049552,0.9997919281892065,0.957252950553616,0.8211969704816487,0.6049157176175093,0.32953837671778646,0.021967412219853624,-0.2877496167440015,-0.5693554953639981,-0.7953392740820578,-0.9436238983717469,-0.9997229845003707,-0.9581560391760205,-0.822983865893656,-0.6074118524777476,-0.33249989588883244,-0.02510499573108298,0.2847424891333405,0.5667725992541083,0.7934329405852707,0.9425803631054774,0.9996441936534296,0.9590496900700206,0.8247626550078475,0.6099020044000709,0.3354581399735839,0.02824233196094937,-0.2817325568414321,-0.5641841204983399,-0.7915187918639366,-0.9415275435294487,-0.9995555564244639,-0.9599338944332555,-0.8265333203033537,-0.6123861488567715,-0.3384130798336693,-0.03137939000704925,0.27871984951576045,0.5615900845929243,0.7895968467721968,0.9404654500138114,0.9994570736865406,0.9608086435564146,0.8282958443393171,0.614864261379299,0.34136468636327366,0.034516138969708,-0.2757043968311618,-0.5589905170888122,-0.7876671242409994,-0.93939409302007,-0.9993487464097032,-0.9616739288233153,-0.8300502097550793,-0.6173363175585348,-0.3443129304893967,-0.03765254795230939,0.2726862284894928,0.556385443591458,0.785729643277886,0.9383134831009659,0.9992305756609633,0.9625297417109987,0.8317963992703424,0.6198022930449969,0.34725778317217837,0.04078858606158593,-0.2696653742193803,-0.5537748897605314,-0.7837844229668312,-0.937223630900388,-0.9991025626042891,-0.9633760737898018,-0.8335343956853316,-0.6222621635491149,-0.3501992154051429,-0.04392422240790649,0.26664186377588567,0.5511588813097008,0.7818314824680312,0.936124547153253,0.9989647085005952,0.9642129167234511,0.8352641818809853,0.6247159048414345,0.35313719821552675,0.047059426105619556,-0.26361572694025504,-0.5485374440063439,-0.7798708410177254,-0.9350162426854153,-0.9988170147077283,-0.9650402622691401,-0.8369857408190994,-0.6271634927528906,-0.35607170266452165,-0.05019416627331283,0.2605869935195825,0.5459106036713303,0.7779025179280166,0.9338987284135464,0.9986594826804559,0.9658581022776072,0.8386990555425194,0.629604903175011,0.35900269984759653,0.05332841203415649,-0.2575556933465543,-0.5432783861787303,-0.7759265325866571,-0.9327720153450331,-0.9984921139704511,-0.9666664286932183,-0.8404041091752866,-0.6320401120601885,-0.36193016089476654,-0.05646213251619054,0.2545218562791446,0.5406408174556019,0.7739429044568823,0.9316361145778735,0.9983149102262755,0.9674652335540556,0.8421008849228098,0.6344690954218785,0.3648540569708668,0.05959529685261778,-0.2514855122002829,-0.5379979234816794,-0.7719516530772115,-0.9304910373005615,-0.9981278731933667,-0.9682545089919787,-0.8437893660720522,-0.6368918293348873,-0.36777435927584207,-0.06272787418212455,0.24844669101762534,0.5353497302891783,0.7699527980612308,0.9293367947919825,0.9979310047140187,0.9690342472327141,0.8454695359916599,0.639308289935552,0.37069103904506623,0.06585983364916805,-0.24540542266322685,-0.5326962639625016,-0.767946359097443,-0.9281733984212863,-0.9977243067273626,-0.9698044405959259,-0.8471413781321494,-0.6417184534220092,-0.3736040675495638,-0.06899114440432468,0.24236173709321446,0.5300375506380012,0.7659323559490444,0.9270008596477993,0.9975077812693506,0.9705650814953019,0.8488048760260594,0.6441222960544134,0.37651341609633404,0.07212177560452723,-0.23931566428755693,-0.5273736165036832,-0.7639108084537448,-0.9258191900209,-0.997281430472734,-0.9713161624386129,-0.8504600132881358,-0.6465197941552042,-0.37941905602861314,-0.07525169641340204,0.23626723424972623,0.5247044877990064,0.7618817365235436,0.9246284011798915,0.9970452565670435,0.9720576760277966,0.8521067736154583,0.6489109241092883,0.3823209587261978,0.07838087600160608,-0.23321647700642364,-0.5220301908145859,-0.7598451601445768,-0.9234285048539135,-0.9967992618785634,-0.9727896149590257,-0.8537451407876185,-0.6512956623643067,-0.38521909560566486,-0.08150928354706388,0.23016342260724054,0.5193507518919538,0.757801099376898,0.9222195128618087,0.9965434488303143,0.9735119720227899,0.855375098666897,0.6536739854308493,0.3881134381206842,0.08463688823531566,-0.22710810112442764,-0.5166661974232606,-0.7557495743542596,-0.9210014371120155,-0.996277819942026,-0.9742247401039513,-0.8569966311983876,-0.6560458698827204,-0.3910039577623307,-0.08776365925979852,0.22405054265255533,0.513976553851073,0.7536906052839579,0.9197742896024335,0.9960023778301138,0.9749279121818225,0.8586097224101786,0.6584112923571186,0.39389062605930314,0.09088956582219448,-0.22099077730823893,-0.5112818476680852,-0.7516242124466049,-0.9185380824203306,-0.9957171252076493,-0.9756214813302434,-0.8602143564134987,-0.6607702295549003,-0.39677341457824583,-0.094014577132667,0.21792883522979858,0.5085821054168284,0.7495504161959432,0.9172928277422079,0.9954220648843395,0.9763054407176339,0.8618105174028964,0.6631226582407933,0.39965229492400844,0.09713866241020881,-0.21486474657702764,-0.5058773536894675,-0.7474692369586162,-0.9160385378336869,-0.9951171997664963,-0.9769797836070715,-0.8633981896563607,-0.6654685552436582,-0.4025272387399662,-0.10026179088292284,0.21179854153086303,0.5031676191275005,0.7453806952340184,0.9147752250493725,0.994802532857003,0.9776445033563528,0.8649773575355001,0.6678078974566588,0.4053982177082381,0.1033839317883809,-0.20873025029305514,-0.5004529284215057,-0.743284811594034,-0.9135029018327567,-0.9944780672552991,-0.9782995934180684,-0.8665480054856899,-0.670140661837556,-0.4082652035500067,-0.10650505437379335,0.20565990308593587,0.4977333083108789,0.741181606682887,0.9122215807160791,0.9941438061573279,0.978945047339653,0.8681101180362147,0.6724668254088768,0.4111281680257862,0.10962512789651192,-0.20258753015207728,-0.4950087855835895,-0.7390711012169074,-0.9109312743202073,-0.9937997528555258,-0.9795808587634587,-0.8696636798004652,-0.6747863652581734,-0.4139870829357012,-0.11274412162414381,0.19951316175400458,0.4922793870758388,0.7369533159843348,0.9096319953545225,0.9934459107387787,0.9802070214268148,0.8712086754760229,0.6770992585382413,0.4168419201197433,0.11586200483495424,-0.19643682817389813,-0.4895451396719121,-0.7348282718451137,-0.9083237566167569,-0.9930822832923916,-0.980823529162086,-0.8727450898448553,-0.6794054824673437,-0.4196926514581305,-0.11897874681814691,0.19335855971331692,0.48680607030383655,0.7326959897306882,0.9070065709929229,0.9927088740980534,0.9814303758967495,0.8742729077734551,0.6817050143294363,0.4225392488714618,0.12209431687416648,-0.19027838669281266,-0.48406220595113497,-0.7305564906438106,-0.9056804514571496,-0.9923256868338024,-0.9820275556534294,-0.875792114212989,-0.6839978314743747,-0.4253816843210753,-0.12520868431500098,0.1871963394517625,0.4813135736405604,0.7284097956582741,0.9043454110715642,0.9919327252739926,0.9826150625499728,0.8773026941994455,0.6862839113182021,0.4282199298093039,0.12832181846446192,-0.18411244834798246,-0.4785602004458294,-0.7262559259187962,-0.9030014629861632,-0.9915299932892452,-0.9831928907995032,-0.8788046328537831,-0.6885632313432751,-0.43105395737975116,-0.131433688658575,0.1810267437574504,0.4758021134873758,0.7240949026407497,0.901648620438683,0.9911174948464274,0.9837610347104779,0.8802979153820655,0.6908357690985497,0.4338837391175667,0.13454426424574928,-0.1779392560740069,-0.4730393399320042,-0.7219267471099691,-0.9002868967544692,-0.990695234008602,-0.9843194886867439,-0.8817825270756503,-0.6931015021997865,-0.43670924714970105,-0.13765351458716774,0.17485001570905573,0.47027190699274063,0.7197514806825406,0.8989163053463557,0.9902632149349907,0.9848682472275927,0.88325845331127,0.6953604083297711,0.43953045364526044,0.14076140905706688,-0.17175905309128642,-0.467499841928486,-0.717569124784592,-0.897536859714493,-0.9898214418809321,-0.985407304927811,-0.8847256795512184,-0.6976124652385343,-0.44234733081566047,-0.14386791704303836,0.1686663986662865,0.464723172043767,0.7153797009120816,0.896148573446274,0.989369919197841,0.9859366564777494,0.8861841913434833,0.6998576507435548,0.4451598509149802,0.14697300794633056,-0.16557208289637354,-0.4619419246884674,-0.7131832306306021,-0.8947514602161611,-0.9889086513331644,-0.9864562966633511,-0.8876339743218887,-0.7020959427300415,-0.4479679862402155,-0.15007665118212787,0.16247613626020724,0.4591561272575584,0.7109797355751056,0.8933455337855614,0.988437642830342,0.9869662203662192,0.8890750142062368,0.7043273191510564,0.4507717091315515,0.15317881617994034,-0.1593785892525111,-0.456365807190829,-0.7087692374497843,-0.8919308080026906,-0.9879568983287474,-0.9874664225636629,-0.8905072968024378,-0.7065517580277942,-0.45357099197263556,-0.15627947238377216,0.15627947238377216,0.45357099197263556,0.7065517580277942,0.8905072968024378,0.9874664225636629,0.9879568983287474,0.8919308080026906,0.7087692374497843,0.456365807190829,0.1593785892525111,-0.15317881617994034,-0.4507717091315515,-0.7043273191510564,-0.8890750142062368,-0.9869662203662192,-0.988437642830342,-0.8933455337855614,-0.7109797355751056,-0.4591561272575584,-0.16247613626020724,0.15007665118212787,0.4479679862402155,0.7020959427300415,0.8876339743218887,0.9864562966633511,0.9889086513331644,0.8947514602161611,0.7131832306306021,0.4619419246884674,0.16557208289637354,-0.14697300794633056,-0.4451598509149802,-0.6998576507435548,-0.8861841913434833,-0.9859366564777494,-0.989369919197841,-0.896148573446274,-0.7153797009120816,-0.464723172043767,-0.1686663986662865,0.14386791704303836,0.44234733081566047,0.6976124652385343,0.8847256795512184,0.985407304927811,0.9898214418809321,0.897536859714493,0.717569124784592,0.467499841928486,0.17175905309128642,-0.14076140905706688,-0.43953045364526044,-0.6953604083297711,-0.88325845331127,-0.9848682472275927,-0.9902632149349907,-0.8989163053463557,-0.7197514806825406,-0.47027190699274063,-0.17485001570905573,0.13765351458716774,0.43670924714970105,0.6931015021997865,0.8817825270756503,0.9843194886867439,0.990695234008602,0.9002868967544692,0.7219267471099691,0.4730393399320042,0.1779392560740069,-0.13454426424574928,-0.4338837391175667,-0.6908357690985497,-0.8802979153820655,-0.9837610347104779,-0.9911174948464274,-0.901648620438683,-0.7240949026407497,-0.4758021134873758,-0.1810267437574504,0.131433688658575,0.43105395737975116,0.6885632313432751,0.8788046328537831,0.9831928907995032,0.9915299932892452,0.9030014629861632,0.7262559259187962,0.4785602004458294,0.18411244834798246,-0.12832181846446192,-0.4282199298093039,-0.6862839113182021,-0.8773026941994455,-0.9826150625499728,-0.9919327252739926,-0.9043454110715642,-0.7284097956582741,-0.4813135736405604,-0.1871963394517625,0.12520868431500098,0.4253816843210753,0.6839978314743747,0.875792114212989,0.9820275556534294,0.9923256868338024,0.9056804514571496,0.7305564906438106,0.48406220595113497,0.19027838669281266,-0.12209431687416648,-0.4225392488714618,-0.6817050143294363,-0.8742729077734551,-0.9814303758967495,-0.9927088740980534,-0.9070065709929229,-0.7326959897306882,-0.48680607030383655,-0.19335855971331692,0.11897874681814691,0.4196926514581305,0.6794054824673437,0.8727450898448553,0.980823529162086,0.9930822832923916,0.9083237566167569,0.7348282718451137,0.4895451396719121,0.19643682817389813,-0.11586200483495424,-0.4168419201197433,-0.6770992585382413,-0.8712086754760229,-0.9802070214268148,-0.9934459107387787,-0.9096319953545225,-0.7369533159843348,-0.4922793870758388,-0.19951316175400458,0.11274412162416599,0.4139870829357012,0.6747863652581734,0.8696636798004652,0.9795808587634541,0.9937997528555234,0.9109312743202073,0.7390711012169074,0.4950087855835895,0.20258753015209913,-0.10962512789653411,-0.4111281680257862,-0.6724668254088768,-0.8681101180362147,-0.9789450473396485,-0.9941438061573254,-0.9122215807160791,-0.741181606682887,-0.4977333083108983,-0.20565990308595772,0.10650505437381554,0.4082652035500067,0.670140661837556,0.8665480054856788,0.978299593418073,0.9944780672552967,0.9135029018327567,0.743284811594034,0.500452928421525,0.2087302502930333,-0.1033839317883809,-0.4053982177082381,-0.6678078974566588,-0.8649773575354889,-0.9776445033563576,-0.994802532857003,-0.9147752250493725,-0.7453806952340184,-0.5031676191275197,-0.2117985415308412,0.10026179088293395,0.4025272387399662,0.6654685552436499,0.8633981896563494,0.9769797836070738,0.9951171997664952,0.9160385378336869,0.7474692369586237,0.5058773536894867,0.21486474657701674,-0.09713866241020881,-0.39965229492400844,-0.6631226582407849,-0.8618105174029077,-0.9763054407176364,-0.9954220648843395,-0.9172928277422123,-0.7495504161959506,-0.5085821054168091,-0.21792883522978768,0.094014577132667,0.39677341457823556,0.6607702295548835,0.8602143564135102,0.9756214813302458,0.9957171252076493,0.9185380824203351,0.7516242124466196,0.511281847668066,0.22099077730822805,-0.09088956582219448,-0.39389062605929287,-0.6584112923571017,-0.8586097224101844,-0.9749279121818251,-0.9960023778301138,-0.9197742896024378,-0.7536906052839726,-0.5139765538510634,-0.22405054265255533,0.08776365925979852,0.39100395776232044,0.6560458698827373,0.8569966311983934,0.9742247401039513,0.996277819942027,0.9210014371120199,0.7557495743542451,0.5166661974232509,0.22710810112442764,-0.08463688823530453,-0.38811343812067395,-0.6536739854308662,-0.8553750986669028,-0.9735119720227899,-0.9965434488303153,-0.9222195128618174,-0.7578010993768834,-0.5193507518919442,-0.23016342260724054,0.08150928354705277,0.38521909560564427,0.6512956623643151,0.8537451407876243,0.9727896149590257,0.9967992618785643,0.9234285048539221,0.7598451601445696,0.5220301908145859,0.23321647700642364,-0.07838087600159495,-0.3823209587262184,-0.6489109241092967,-0.8521067736154583,-0.972057676027794,-0.9970452565670442,-0.9246284011798831,-0.7618817365235365,-0.5247044877990064,-0.23626723424973708,0.07525169641339091,0.3794190560286338,0.6465197941552128,0.8504600132881358,0.9713161624386102,0.9972814304727357,0.9258191900208915,0.7639108084537376,0.5273736165036832,0.23931566428756776,-0.07212177560450497,-0.37651341609634437,-0.644122296054422,-0.8488048760260594,-0.9705650814952992,-0.9975077812693521,-0.9270008596477952,-0.7659323559490444,-0.5300375506380012,-0.24236173709322528,0.06899114440434695,0.37360406754957415,0.6417184534220092,0.8471413781321435,0.9698044405959231,0.9977243067273611,0.9281733984212822,0.767946359097443,0.532696263962511,0.24540542266323764,-0.06585983364919032,-0.3706910390450766,-0.639308289935552,-0.845469535991654,-0.9690342472327087,-0.9979310047140173,-0.9293367947919784,-0.7699527980612308,-0.5353497302891878,-0.24844669101764696,0.0627278741821357,0.36777435927585245,0.6368918293348873,0.8437893660720462,0.9682545089919732,0.998127873193366,0.9304910373005615,0.7719516530772115,0.5379979234816888,0.25148551220026133,-0.05959529685262892,-0.3648540569708668,-0.6344690954218785,-0.8421008849228038,-0.9674652335540612,-0.9983149102262749,-0.9316361145778735,-0.7739429044568894,-0.5406408174556112,-0.254521856279123,0.056462132516201684,0.36193016089476654,0.6320401120601798,0.8404041091752745,0.9666664286932241,0.9984921139704505,0.9327720153450331,0.7759265325866641,0.543278386178749,0.25755569334654355,-0.05332841203416763,-0.35900269984759653,-0.6296049031750024,-0.8386990555425073,-0.96585810227761,-0.9986594826804559,-0.9338987284135464,-0.7779025179280236,-0.5459106036713489,-0.2605869935195717,0.05019416627331841,0.35607170266451643,0.6271634927528776,0.8369857408191116,0.965040262269143,0.9988170147077283,0.9350162426854173,0.7798708410177358,0.5485374440063299,0.26361572694024427,-0.047059426105619556,-0.3531371982155163,-0.6247159048414215,-0.8352641818809945,-0.9642129167234541,-0.9989647085005952,-0.9361245471532569,-0.7818314824680417,-0.5511588813096868,-0.26664186377588034,0.04392422240790649,0.3501992154051325,0.6222621635490975,0.8335343956853408,0.9633760737898033,0.9991025626042893,0.9372236309003918,0.783784422966845,0.553774889760522,0.2696653742193749,-0.04078858606158036,-0.34725778317216266,-0.6198022930450144,-0.8317963992703485,-0.9625297417109987,-0.9992305756609635,-0.9383134831009717,-0.7857296432778755,-0.5563854435914488,-0.2726862284894928,0.037652547952303814,0.344312930489381,0.617336317558548,0.8300502097550855,0.9616739288233153,0.9993487464097035,0.9393940930200758,0.7876671242409891,0.5589905170888075,0.2757043968311618,-0.03451613896969685,-0.3413646863632527,-0.6148642613793122,-0.8282958443393202,-0.960808643556413,-0.999457073686541,-0.940465450013819,-0.7895968467721899,-0.5615900845929197,-0.2787198495157658,0.03137939000703252,0.3384130798336903,0.6123861488567803,0.8265333203033537,0.9599338944332539,0.9995555564244644,0.9415275435294412,0.7915187918639297,0.5641841204983399,0.2817325568414375,-0.028242331960932638,-0.3354581399735997,-0.6099020044000798,-0.8247626550078475,-0.9590496900700175,-0.99964419365343,-0.9425803631054719,-0.7934329405852673,-0.5667725992541083,-0.28474248913335115,0.025104995731063454,0.3324998958888456,0.6074118524777521,0.8229838658936545,0.9581560391760165,0.9997229845003712,0.9436238983717422,0.7953392740820545,0.5693554953640028,0.28774961674401484,-0.02196741221987594,-0.329538376717797,-0.6049157176175115,-0.8211969704816456,-0.9572529505536113,-0.9997919281892061,-0.9446581390495483,-0.7972377735771226,-0.571932783386789,-0.2907539100535624,0.018829612332122846,0.3265736116310821,0.6024136244060033,0.8194019863725382,0.9563404330981221,0.9998510240408491,0.9456830749517365,0.7991284203704665,0.5745044379364723,0.29375533947004506,-0.015691626974822116,-0.32360562983130103,-0.5999055974885623,-0.8175989312467226,-0.9554184957977425,-0.9999002714732118,-0.9466986959828045,-0.8010111958394297,-0.5770704336825467,-0.2967538754296807,0.012553487056773914,0.32063446055273825,0.5973916615689694,0.8157878228640871,0.954487147733464,0.9999396700012125,0.9477049921390001,0.8028860814388872,0.579630745350245,0.29974948839731513,-0.009415223488300803,-0.3176601330610744,-0.5948718414092085,-0.8139686790638443,-0.9535463980789327,-0.9999692192367803,-0.9487019535084202,-0.8047530587014282,-0.582185347720787,-0.30274214886645745,0.006276867180943299,0.3146826766530981,0.5923461618292225,0.8121415177643543,0.9525962561004394,0.9999889188888583,0.9496895702711083,0.8066121092375382,0.5847342156315931,0.30573182735974125,-0.0031384490471553766,-0.3117021206564178,-0.5898146477066691,-0.8103063569629751,-0.9516367311567749,-0.9999987687634074,-0.9506678326991512,-0.8084632147357804,-0.5872773239766755,-0.30871849442917204,0.0],"x":[-100.0,-99.9000999000999,-99.8001998001998,-99.7002997002997,-99.6003996003996,-99.5004995004995,-99.4005994005994,-99.3006993006993,-99.2007992007992,-99.1008991008991,-99.000999000999,-98.9010989010989,-98.80119880119881,-98.7012987012987,-98.6013986013986,-98.5014985014985,-98.4015984015984,-98.3016983016983,-98.2017982017982,-98.1018981018981,-98.001998001998,-97.9020979020979,-97.8021978021978,-97.7022977022977,-97.6023976023976,-97.5024975024975,-97.40259740259741,-97.3026973026973,-97.2027972027972,-97.1028971028971,-97.002997002997,-96.90309690309691,-96.8031968031968,-96.7032967032967,-96.6033966033966,-96.5034965034965,-96.40359640359641,-96.3036963036963,-96.2037962037962,-96.1038961038961,-96.00399600399601,-95.90409590409591,-95.8041958041958,-95.7042957042957,-95.6043956043956,-95.50449550449551,-95.4045954045954,-95.3046953046953,-95.2047952047952,-95.1048951048951,-95.00499500499501,-94.9050949050949,-94.8051948051948,-94.7052947052947,-94.60539460539461,-94.50549450549451,-94.4055944055944,-94.3056943056943,-94.2057942057942,-94.10589410589411,-94.00599400599401,-93.9060939060939,-93.8061938061938,-93.7062937062937,-93.60639360639361,-93.50649350649351,-93.4065934065934,-93.3066933066933,-93.20679320679321,-93.10689310689311,-93.00699300699301,-92.9070929070929,-92.8071928071928,-92.70729270729271,-92.60739260739261,-92.5074925074925,-92.4075924075924,-92.3076923076923,-92.20779220779221,-92.10789210789211,-92.007992007992,-91.9080919080919,-91.80819180819181,-91.70829170829171,-91.60839160839161,-91.5084915084915,-91.4085914085914,-91.30869130869131,-91.20879120879121,-91.10889110889111,-91.008991008991,-90.9090909090909,-90.80919080919081,-90.70929070929071,-90.60939060939062,-90.5094905094905,-90.40959040959041,-90.30969030969031,-90.20979020979021,-90.10989010989012,-90.00999000999,-89.91008991008991,-89.81018981018981,-89.71028971028971,-89.6103896103896,-89.5104895104895,-89.41058941058941,-89.31068931068931,-89.21078921078922,-89.1108891108891,-89.01098901098901,-88.91108891108891,-88.81118881118881,-88.71128871128872,-88.6113886113886,-88.51148851148851,-88.41158841158841,-88.31168831168831,-88.21178821178822,-88.1118881118881,-88.01198801198801,-87.91208791208791,-87.81218781218782,-87.71228771228772,-87.61238761238761,-87.51248751248751,-87.41258741258741,-87.31268731268732,-87.21278721278722,-87.11288711288711,-87.01298701298701,-86.91308691308691,-86.81318681318682,-86.7132867132867,-86.61338661338661,-86.51348651348651,-86.41358641358642,-86.31368631368632,-86.21378621378621,-86.11388611388611,-86.01398601398601,-85.91408591408592,-85.81418581418582,-85.71428571428571,-85.61438561438561,-85.51448551448551,-85.41458541458542,-85.31468531468532,-85.21478521478521,-85.11488511488511,-85.01498501498502,-84.91508491508492,-84.81518481518482,-84.71528471528471,-84.61538461538461,-84.51548451548452,-84.41558441558442,-84.31568431568432,-84.21578421578421,-84.11588411588411,-84.01598401598402,-83.91608391608392,-83.81618381618381,-83.71628371628371,-83.61638361638362,-83.51648351648352,-83.41658341658342,-83.31668331668331,-83.21678321678321,-83.11688311688312,-83.01698301698302,-82.91708291708292,-82.81718281718281,-82.71728271728271,-82.61738261738262,-82.51748251748252,-82.41758241758242,-82.31768231768231,-82.21778221778222,-82.11788211788212,-82.01798201798202,-81.91808191808192,-81.81818181818181,-81.71828171828172,-81.61838161838162,-81.51848151848152,-81.41858141858143,-81.31868131868131,-81.21878121878122,-81.11888111888112,-81.01898101898102,-80.91908091908093,-80.81918081918081,-80.71928071928072,-80.61938061938062,-80.51948051948052,-80.41958041958041,-80.31968031968032,-80.21978021978022,-80.11988011988012,-80.01998001998003,-79.92007992007991,-79.82017982017982,-79.72027972027972,-79.62037962037962,-79.52047952047953,-79.42057942057941,-79.32067932067932,-79.22077922077922,-79.12087912087912,-79.02097902097903,-78.92107892107892,-78.82117882117882,-78.72127872127872,-78.62137862137862,-78.52147852147853,-78.42157842157842,-78.32167832167832,-78.22177822177822,-78.12187812187813,-78.02197802197803,-77.92207792207792,-77.82217782217782,-77.72227772227772,-77.62237762237763,-77.52247752247752,-77.42257742257742,-77.32267732267732,-77.22277722277722,-77.12287712287713,-77.02297702297702,-76.92307692307692,-76.82317682317682,-76.72327672327673,-76.62337662337663,-76.52347652347652,-76.42357642357642,-76.32367632367632,-76.22377622377623,-76.12387612387613,-76.02397602397602,-75.92407592407592,-75.82417582417582,-75.72427572427573,-75.62437562437563,-75.52447552447552,-75.42457542457542,-75.32467532467533,-75.22477522477523,-75.12487512487513,-75.02497502497502,-74.92507492507492,-74.82517482517483,-74.72527472527473,-74.62537462537462,-74.52547452547452,-74.42557442557442,-74.32567432567433,-74.22577422577423,-74.12587412587412,-74.02597402597402,-73.92607392607393,-73.82617382617383,-73.72627372627373,-73.62637362637362,-73.52647352647352,-73.42657342657343,-73.32667332667333,-73.22677322677323,-73.12687312687312,-73.02697302697302,-72.92707292707293,-72.82717282717283,-72.72727272727273,-72.62737262737262,-72.52747252747253,-72.42757242757243,-72.32767232767233,-72.22777222777223,-72.12787212787212,-72.02797202797203,-71.92807192807193,-71.82817182817183,-71.72827172827172,-71.62837162837162,-71.52847152847153,-71.42857142857143,-71.32867132867133,-71.22877122877122,-71.12887112887113,-71.02897102897103,-70.92907092907093,-70.82917082917083,-70.72927072927072,-70.62937062937063,-70.52947052947053,-70.42957042957043,-70.32967032967034,-70.22977022977022,-70.12987012987013,-70.02997002997003,-69.93006993006993,-69.83016983016984,-69.73026973026973,-69.63036963036963,-69.53046953046953,-69.43056943056943,-69.33066933066934,-69.23076923076923,-69.13086913086913,-69.03096903096903,-68.93106893106894,-68.83116883116882,-68.73126873126873,-68.63136863136863,-68.53146853146853,-68.43156843156844,-68.33166833166833,-68.23176823176823,-68.13186813186813,-68.03196803196803,-67.93206793206794,-67.83216783216783,-67.73226773226773,-67.63236763236763,-67.53246753246754,-67.43256743256744,-67.33266733266733,-67.23276723276723,-67.13286713286713,-67.03296703296704,-66.93306693306694,-66.83316683316683,-66.73326673326673,-66.63336663336663,-66.53346653346654,-66.43356643356644,-66.33366633366633,-66.23376623376623,-66.13386613386614,-66.03396603396604,-65.93406593406593,-65.83416583416583,-65.73426573426573,-65.63436563436564,-65.53446553446554,-65.43456543456543,-65.33466533466533,-65.23476523476523,-65.13486513486514,-65.03496503496504,-64.93506493506493,-64.83516483516483,-64.73526473526474,-64.63536463536464,-64.53546453546454,-64.43556443556443,-64.33566433566433,-64.23576423576424,-64.13586413586414,-64.03596403596404,-63.93606393606394,-63.836163836163834,-63.73626373626374,-63.63636363636363,-63.536463536463536,-63.43656343656344,-63.336663336663335,-63.23676323676324,-63.136863136863134,-63.03696303696304,-62.93706293706294,-62.837162837162836,-62.73726273726274,-62.637362637362635,-62.53746253746254,-62.437562437562434,-62.33766233766234,-62.23776223776224,-62.137862137862136,-62.03796203796204,-61.938061938061935,-61.83816183816184,-61.73826173826174,-61.63836163836164,-61.53846153846154,-61.438561438561436,-61.33866133866134,-61.23876123876124,-61.13886113886114,-61.03896103896104,-60.93906093906094,-60.83916083916084,-60.739260739260736,-60.63936063936064,-60.53946053946054,-60.43956043956044,-60.33966033966034,-60.23976023976024,-60.13986013986014,-60.03996003996004,-59.94005994005994,-59.84015984015984,-59.74025974025974,-59.64035964035964,-59.54045954045954,-59.44055944055944,-59.34065934065934,-59.24075924075924,-59.14085914085914,-59.04095904095904,-58.94105894105894,-58.841158841158844,-58.74125874125874,-58.64135864135864,-58.54145854145854,-58.44155844155844,-58.341658341658345,-58.24175824175824,-58.141858141858144,-58.04195804195804,-57.94205794205794,-57.84215784215784,-57.74225774225774,-57.642357642357645,-57.54245754245754,-57.442557442557444,-57.34265734265734,-57.24275724275724,-57.142857142857146,-57.04295704295704,-56.943056943056945,-56.84315684315684,-56.743256743256744,-56.64335664335665,-56.54345654345654,-56.443556443556446,-56.34365634365634,-56.243756243756245,-56.14385614385614,-56.043956043956044,-55.94405594405595,-55.84415584415584,-55.744255744255746,-55.64435564435564,-55.544455544455545,-55.44455544455545,-55.344655344655344,-55.24475524475525,-55.14485514485514,-55.044955044955046,-54.94505494505494,-54.845154845154845,-54.74525474525475,-54.645354645354644,-54.54545454545455,-54.44555444555444,-54.345654345654346,-54.24575424575425,-54.145854145854145,-54.04595404595405,-53.946053946053944,-53.84615384615385,-53.74625374625375,-53.646353646353646,-53.54645354645355,-53.446553446553445,-53.34665334665335,-53.246753246753244,-53.14685314685315,-53.04695304695305,-52.947052947052946,-52.84715284715285,-52.747252747252745,-52.64735264735265,-52.54745254745255,-52.44755244755245,-52.34765234765235,-52.247752247752246,-52.14785214785215,-52.047952047952045,-51.94805194805195,-51.84815184815185,-51.74825174825175,-51.64835164835165,-51.548451548451546,-51.44855144855145,-51.34865134865135,-51.24875124875125,-51.14885114885115,-51.04895104895105,-50.94905094905095,-50.84915084915085,-50.74925074925075,-50.64935064935065,-50.54945054945055,-50.44955044955045,-50.34965034965035,-50.24975024975025,-50.14985014985015,-50.04995004995005,-49.95004995004995,-49.85014985014985,-49.75024975024975,-49.65034965034965,-49.55044955044955,-49.45054945054945,-49.35064935064935,-49.25074925074925,-49.15084915084915,-49.05094905094905,-48.95104895104895,-48.85114885114885,-48.75124875124875,-48.65134865134865,-48.55144855144855,-48.451548451548454,-48.35164835164835,-48.25174825174825,-48.15184815184815,-48.05194805194805,-47.952047952047955,-47.85214785214785,-47.752247752247754,-47.65234765234765,-47.55244755244755,-47.45254745254745,-47.35264735264735,-47.252747252747255,-47.15284715284715,-47.052947052947054,-46.95304695304695,-46.85314685314685,-46.753246753246756,-46.65334665334665,-46.553446553446555,-46.45354645354645,-46.353646353646354,-46.25374625374625,-46.15384615384615,-46.053946053946056,-45.95404595404595,-45.854145854145855,-45.75424575424575,-45.654345654345654,-45.55444555444556,-45.45454545454545,-45.354645354645356,-45.25474525474525,-45.154845154845155,-45.05494505494506,-44.955044955044954,-44.85514485514486,-44.75524475524475,-44.655344655344656,-44.55544455544455,-44.455544455544455,-44.35564435564436,-44.255744255744254,-44.15584415584416,-44.05594405594405,-43.956043956043956,-43.85614385614386,-43.756243756243755,-43.65634365634366,-43.556443556443554,-43.45654345654346,-43.35664335664335,-43.256743256743256,-43.15684315684316,-43.056943056943055,-42.95704295704296,-42.857142857142854,-42.75724275724276,-42.65734265734266,-42.557442557442556,-42.45754245754246,-42.357642357642355,-42.25774225774226,-42.15784215784216,-42.05794205794206,-41.95804195804196,-41.858141858141856,-41.75824175824176,-41.658341658341655,-41.55844155844156,-41.45854145854146,-41.35864135864136,-41.25874125874126,-41.158841158841156,-41.05894105894106,-40.95904095904096,-40.85914085914086,-40.75924075924076,-40.65934065934066,-40.55944055944056,-40.45954045954046,-40.35964035964036,-40.25974025974026,-40.15984015984016,-40.05994005994006,-39.96003996003996,-39.86013986013986,-39.76023976023976,-39.66033966033966,-39.56043956043956,-39.46053946053946,-39.36063936063936,-39.260739260739264,-39.16083916083916,-39.06093906093906,-38.96103896103896,-38.86113886113886,-38.76123876123876,-38.66133866133866,-38.561438561438564,-38.46153846153846,-38.36163836163836,-38.26173826173826,-38.16183816183816,-38.061938061938065,-37.96203796203796,-37.862137862137864,-37.76223776223776,-37.66233766233766,-37.562437562437566,-37.46253746253746,-37.362637362637365,-37.26273726273726,-37.162837162837164,-37.06293706293706,-36.96303696303696,-36.863136863136866,-36.76323676323676,-36.663336663336665,-36.56343656343656,-36.463536463536464,-36.36363636363637,-36.26373626373626,-36.163836163836166,-36.06393606393606,-35.964035964035965,-35.86413586413586,-35.764235764235764,-35.66433566433567,-35.56443556443556,-35.464535464535466,-35.36463536463536,-35.264735264735265,-35.16483516483517,-35.064935064935064,-34.96503496503497,-34.86513486513486,-34.765234765234766,-34.66533466533467,-34.565434565434565,-34.46553446553447,-34.365634365634364,-34.26573426573427,-34.16583416583416,-34.065934065934066,-33.96603396603397,-33.866133866133865,-33.76623376623377,-33.666333666333664,-33.56643356643357,-33.46653346653347,-33.366633366633366,-33.26673326673327,-33.166833166833165,-33.06693306693307,-32.967032967032964,-32.86713286713287,-32.76723276723277,-32.667332667332666,-32.56743256743257,-32.467532467532465,-32.36763236763237,-32.26773226773227,-32.16783216783217,-32.06793206793207,-31.96803196803197,-31.86813186813187,-31.768231768231768,-31.668331668331668,-31.568431568431567,-31.46853146853147,-31.36863136863137,-31.26873126873127,-31.16883116883117,-31.068931068931068,-30.969030969030968,-30.86913086913087,-30.76923076923077,-30.66933066933067,-30.56943056943057,-30.46953046953047,-30.369630369630368,-30.26973026973027,-30.16983016983017,-30.06993006993007,-29.97002997002997,-29.87012987012987,-29.77022977022977,-29.67032967032967,-29.57042957042957,-29.47052947052947,-29.37062937062937,-29.27072927072927,-29.170829170829172,-29.070929070929072,-28.97102897102897,-28.87112887112887,-28.77122877122877,-28.67132867132867,-28.571428571428573,-28.471528471528472,-28.371628371628372,-28.27172827172827,-28.17182817182817,-28.07192807192807,-27.972027972027973,-27.872127872127873,-27.772227772227772,-27.672327672327672,-27.57242757242757,-27.47252747252747,-27.372627372627374,-27.272727272727273,-27.172827172827173,-27.072927072927072,-26.973026973026972,-26.873126873126875,-26.773226773226774,-26.673326673326674,-26.573426573426573,-26.473526473526473,-26.373626373626372,-26.273726273726275,-26.173826173826175,-26.073926073926074,-25.974025974025974,-25.874125874125873,-25.774225774225773,-25.674325674325676,-25.574425574425575,-25.474525474525475,-25.374625374625374,-25.274725274725274,-25.174825174825173,-25.074925074925076,-24.975024975024976,-24.875124875124875,-24.775224775224775,-24.675324675324674,-24.575424575424574,-24.475524475524477,-24.375624375624376,-24.275724275724276,-24.175824175824175,-24.075924075924075,-23.976023976023978,-23.876123876123877,-23.776223776223777,-23.676323676323676,-23.576423576423576,-23.476523476523475,-23.376623376623378,-23.276723276723278,-23.176823176823177,-23.076923076923077,-22.977022977022976,-22.877122877122876,-22.77722277722278,-22.677322677322678,-22.577422577422578,-22.477522477522477,-22.377622377622377,-22.277722277722276,-22.17782217782218,-22.07792207792208,-21.978021978021978,-21.878121878121878,-21.778221778221777,-21.678321678321677,-21.57842157842158,-21.47852147852148,-21.37862137862138,-21.278721278721278,-21.178821178821178,-21.07892107892108,-20.97902097902098,-20.87912087912088,-20.77922077922078,-20.67932067932068,-20.579420579420578,-20.47952047952048,-20.37962037962038,-20.27972027972028,-20.17982017982018,-20.07992007992008,-19.98001998001998,-19.88011988011988,-19.78021978021978,-19.68031968031968,-19.58041958041958,-19.48051948051948,-19.38061938061938,-19.280719280719282,-19.18081918081918,-19.08091908091908,-18.98101898101898,-18.88111888111888,-18.781218781218783,-18.681318681318682,-18.581418581418582,-18.48151848151848,-18.38161838161838,-18.28171828171828,-18.181818181818183,-18.081918081918083,-17.982017982017982,-17.882117882117882,-17.78221778221778,-17.68231768231768,-17.582417582417584,-17.482517482517483,-17.382617382617383,-17.282717282717282,-17.182817182817182,-17.08291708291708,-16.983016983016984,-16.883116883116884,-16.783216783216783,-16.683316683316683,-16.583416583416582,-16.483516483516482,-16.383616383616385,-16.283716283716284,-16.183816183816184,-16.083916083916083,-15.984015984015985,-15.884115884115884,-15.784215784215784,-15.684315684315685,-15.584415584415584,-15.484515484515484,-15.384615384615385,-15.284715284715285,-15.184815184815184,-15.084915084915085,-14.985014985014985,-14.885114885114884,-14.785214785214785,-14.685314685314685,-14.585414585414586,-14.485514485514486,-14.385614385614385,-14.285714285714286,-14.185814185814186,-14.085914085914085,-13.986013986013987,-13.886113886113886,-13.786213786213786,-13.686313686313687,-13.586413586413586,-13.486513486513486,-13.386613386613387,-13.286713286713287,-13.186813186813186,-13.086913086913087,-12.987012987012987,-12.887112887112886,-12.787212787212788,-12.687312687312687,-12.587412587412587,-12.487512487512488,-12.387612387612387,-12.287712287712287,-12.187812187812188,-12.087912087912088,-11.988011988011989,-11.888111888111888,-11.788211788211788,-11.688311688311689,-11.588411588411589,-11.488511488511488,-11.38861138861139,-11.288711288711289,-11.188811188811188,-11.08891108891109,-10.989010989010989,-10.889110889110889,-10.78921078921079,-10.68931068931069,-10.589410589410589,-10.48951048951049,-10.38961038961039,-10.289710289710289,-10.18981018981019,-10.08991008991009,-9.99000999000999,-9.89010989010989,-9.79020979020979,-9.69030969030969,-9.59040959040959,-9.49050949050949,-9.390609390609391,-9.290709290709291,-9.19080919080919,-9.090909090909092,-8.991008991008991,-8.89110889110889,-8.791208791208792,-8.691308691308691,-8.591408591408591,-8.491508491508492,-8.391608391608392,-8.291708291708291,-8.191808191808192,-8.091908091908092,-7.992007992007992,-7.892107892107892,-7.792207792207792,-7.6923076923076925,-7.592407592407592,-7.492507492507492,-7.392607392607393,-7.292707292707293,-7.192807192807193,-7.092907092907093,-6.993006993006993,-6.893106893106893,-6.793206793206793,-6.693306693306694,-6.593406593406593,-6.4935064935064934,-6.393606393606394,-6.293706293706293,-6.193806193806194,-6.093906093906094,-5.994005994005994,-5.894105894105894,-5.794205794205794,-5.694305694305695,-5.594405594405594,-5.4945054945054945,-5.394605394605395,-5.294705294705294,-5.194805194805195,-5.094905094905095,-4.995004995004995,-4.895104895104895,-4.795204795204795,-4.695304695304696,-4.595404595404595,-4.495504495504496,-4.395604395604396,-4.2957042957042955,-4.195804195804196,-4.095904095904096,-3.996003996003996,-3.896103896103896,-3.796203796203796,-3.6963036963036964,-3.5964035964035963,-3.4965034965034967,-3.3966033966033966,-3.2967032967032965,-3.196803196803197,-3.096903096903097,-2.997002997002997,-2.897102897102897,-2.797202797202797,-2.6973026973026974,-2.5974025974025974,-2.4975024975024973,-2.3976023976023977,-2.2977022977022976,-2.197802197802198,-2.097902097902098,-1.998001998001998,-1.898101898101898,-1.7982017982017982,-1.6983016983016983,-1.5984015984015985,-1.4985014985014986,-1.3986013986013985,-1.2987012987012987,-1.1988011988011988,-1.098901098901099,-0.999000999000999,-0.8991008991008991,-0.7992007992007992,-0.6993006993006993,-0.5994005994005994,-0.4995004995004995,-0.3996003996003996,-0.2997002997002997,-0.1998001998001998,-0.0999000999000999,0.0,0.0999000999000999,0.1998001998001998,0.2997002997002997,0.3996003996003996,0.4995004995004995,0.5994005994005994,0.6993006993006993,0.7992007992007992,0.8991008991008991,0.999000999000999,1.098901098901099,1.1988011988011988,1.2987012987012987,1.3986013986013985,1.4985014985014986,1.5984015984015985,1.6983016983016983,1.7982017982017982,1.898101898101898,1.998001998001998,2.097902097902098,2.197802197802198,2.2977022977022976,2.3976023976023977,2.4975024975024973,2.5974025974025974,2.6973026973026974,2.797202797202797,2.897102897102897,2.997002997002997,3.096903096903097,3.196803196803197,3.2967032967032965,3.3966033966033966,3.4965034965034967,3.5964035964035963,3.6963036963036964,3.796203796203796,3.896103896103896,3.996003996003996,4.095904095904096,4.195804195804196,4.2957042957042955,4.395604395604396,4.495504495504496,4.595404595404595,4.695304695304696,4.795204795204795,4.895104895104895,4.995004995004995,5.094905094905095,5.194805194805195,5.294705294705294,5.394605394605395,5.4945054945054945,5.594405594405594,5.694305694305695,5.794205794205794,5.894105894105894,5.994005994005994,6.093906093906094,6.193806193806194,6.293706293706293,6.393606393606394,6.4935064935064934,6.593406593406593,6.693306693306694,6.793206793206793,6.893106893106893,6.993006993006993,7.092907092907093,7.192807192807193,7.292707292707293,7.392607392607393,7.492507492507492,7.592407592407592,7.6923076923076925,7.792207792207792,7.892107892107892,7.992007992007992,8.091908091908092,8.191808191808192,8.291708291708291,8.391608391608392,8.491508491508492,8.591408591408591,8.691308691308691,8.791208791208792,8.89110889110889,8.991008991008991,9.090909090909092,9.19080919080919,9.290709290709291,9.390609390609391,9.49050949050949,9.59040959040959,9.69030969030969,9.79020979020979,9.89010989010989,9.99000999000999,10.08991008991009,10.18981018981019,10.289710289710289,10.38961038961039,10.48951048951049,10.589410589410589,10.68931068931069,10.78921078921079,10.889110889110889,10.989010989010989,11.08891108891109,11.188811188811188,11.288711288711289,11.38861138861139,11.488511488511488,11.588411588411589,11.688311688311689,11.788211788211788,11.888111888111888,11.988011988011989,12.087912087912088,12.187812187812188,12.287712287712287,12.387612387612387,12.487512487512488,12.587412587412587,12.687312687312687,12.787212787212788,12.887112887112886,12.987012987012987,13.086913086913087,13.186813186813186,13.286713286713287,13.386613386613387,13.486513486513486,13.586413586413586,13.686313686313687,13.786213786213786,13.886113886113886,13.986013986013987,14.085914085914085,14.185814185814186,14.285714285714286,14.385614385614385,14.485514485514486,14.585414585414586,14.685314685314685,14.785214785214785,14.885114885114884,14.985014985014985,15.084915084915085,15.184815184815184,15.284715284715285,15.384615384615385,15.484515484515484,15.584415584415584,15.684315684315685,15.784215784215784,15.884115884115884,15.984015984015985,16.083916083916083,16.183816183816184,16.283716283716284,16.383616383616385,16.483516483516482,16.583416583416582,16.683316683316683,16.783216783216783,16.883116883116884,16.983016983016984,17.08291708291708,17.182817182817182,17.282717282717282,17.382617382617383,17.482517482517483,17.582417582417584,17.68231768231768,17.78221778221778,17.882117882117882,17.982017982017982,18.081918081918083,18.181818181818183,18.28171828171828,18.38161838161838,18.48151848151848,18.581418581418582,18.681318681318682,18.781218781218783,18.88111888111888,18.98101898101898,19.08091908091908,19.18081918081918,19.280719280719282,19.38061938061938,19.48051948051948,19.58041958041958,19.68031968031968,19.78021978021978,19.88011988011988,19.98001998001998,20.07992007992008,20.17982017982018,20.27972027972028,20.37962037962038,20.47952047952048,20.579420579420578,20.67932067932068,20.77922077922078,20.87912087912088,20.97902097902098,21.07892107892108,21.178821178821178,21.278721278721278,21.37862137862138,21.47852147852148,21.57842157842158,21.678321678321677,21.778221778221777,21.878121878121878,21.978021978021978,22.07792207792208,22.17782217782218,22.277722277722276,22.377622377622377,22.477522477522477,22.577422577422578,22.677322677322678,22.77722277722278,22.877122877122876,22.977022977022976,23.076923076923077,23.176823176823177,23.276723276723278,23.376623376623378,23.476523476523475,23.576423576423576,23.676323676323676,23.776223776223777,23.876123876123877,23.976023976023978,24.075924075924075,24.175824175824175,24.275724275724276,24.375624375624376,24.475524475524477,24.575424575424574,24.675324675324674,24.775224775224775,24.875124875124875,24.975024975024976,25.074925074925076,25.174825174825173,25.274725274725274,25.374625374625374,25.474525474525475,25.574425574425575,25.674325674325676,25.774225774225773,25.874125874125873,25.974025974025974,26.073926073926074,26.173826173826175,26.273726273726275,26.373626373626372,26.473526473526473,26.573426573426573,26.673326673326674,26.773226773226774,26.873126873126875,26.973026973026972,27.072927072927072,27.172827172827173,27.272727272727273,27.372627372627374,27.47252747252747,27.57242757242757,27.672327672327672,27.772227772227772,27.872127872127873,27.972027972027973,28.07192807192807,28.17182817182817,28.27172827172827,28.371628371628372,28.471528471528472,28.571428571428573,28.67132867132867,28.77122877122877,28.87112887112887,28.97102897102897,29.070929070929072,29.170829170829172,29.27072927072927,29.37062937062937,29.47052947052947,29.57042957042957,29.67032967032967,29.77022977022977,29.87012987012987,29.97002997002997,30.06993006993007,30.16983016983017,30.26973026973027,30.369630369630368,30.46953046953047,30.56943056943057,30.66933066933067,30.76923076923077,30.86913086913087,30.969030969030968,31.068931068931068,31.16883116883117,31.26873126873127,31.36863136863137,31.46853146853147,31.568431568431567,31.668331668331668,31.768231768231768,31.86813186813187,31.96803196803197,32.06793206793207,32.16783216783217,32.26773226773227,32.36763236763237,32.467532467532465,32.56743256743257,32.667332667332666,32.76723276723277,32.86713286713287,32.967032967032964,33.06693306693307,33.166833166833165,33.26673326673327,33.366633366633366,33.46653346653347,33.56643356643357,33.666333666333664,33.76623376623377,33.866133866133865,33.96603396603397,34.065934065934066,34.16583416583416,34.26573426573427,34.365634365634364,34.46553446553447,34.565434565434565,34.66533466533467,34.765234765234766,34.86513486513486,34.96503496503497,35.064935064935064,35.16483516483517,35.264735264735265,35.36463536463536,35.464535464535466,35.56443556443556,35.66433566433567,35.764235764235764,35.86413586413586,35.964035964035965,36.06393606393606,36.163836163836166,36.26373626373626,36.36363636363637,36.463536463536464,36.56343656343656,36.663336663336665,36.76323676323676,36.863136863136866,36.96303696303696,37.06293706293706,37.162837162837164,37.26273726273726,37.362637362637365,37.46253746253746,37.562437562437566,37.66233766233766,37.76223776223776,37.862137862137864,37.96203796203796,38.061938061938065,38.16183816183816,38.26173826173826,38.36163836163836,38.46153846153846,38.561438561438564,38.66133866133866,38.76123876123876,38.86113886113886,38.96103896103896,39.06093906093906,39.16083916083916,39.260739260739264,39.36063936063936,39.46053946053946,39.56043956043956,39.66033966033966,39.76023976023976,39.86013986013986,39.96003996003996,40.05994005994006,40.15984015984016,40.25974025974026,40.35964035964036,40.45954045954046,40.55944055944056,40.65934065934066,40.75924075924076,40.85914085914086,40.95904095904096,41.05894105894106,41.158841158841156,41.25874125874126,41.35864135864136,41.45854145854146,41.55844155844156,41.658341658341655,41.75824175824176,41.858141858141856,41.95804195804196,42.05794205794206,42.15784215784216,42.25774225774226,42.357642357642355,42.45754245754246,42.557442557442556,42.65734265734266,42.75724275724276,42.857142857142854,42.95704295704296,43.056943056943055,43.15684315684316,43.256743256743256,43.35664335664335,43.45654345654346,43.556443556443554,43.65634365634366,43.756243756243755,43.85614385614386,43.956043956043956,44.05594405594405,44.15584415584416,44.255744255744254,44.35564435564436,44.455544455544455,44.55544455544455,44.655344655344656,44.75524475524475,44.85514485514486,44.955044955044954,45.05494505494506,45.154845154845155,45.25474525474525,45.354645354645356,45.45454545454545,45.55444555444556,45.654345654345654,45.75424575424575,45.854145854145855,45.95404595404595,46.053946053946056,46.15384615384615,46.25374625374625,46.353646353646354,46.45354645354645,46.553446553446555,46.65334665334665,46.753246753246756,46.85314685314685,46.95304695304695,47.052947052947054,47.15284715284715,47.252747252747255,47.35264735264735,47.45254745254745,47.55244755244755,47.65234765234765,47.752247752247754,47.85214785214785,47.952047952047955,48.05194805194805,48.15184815184815,48.25174825174825,48.35164835164835,48.451548451548454,48.55144855144855,48.65134865134865,48.75124875124875,48.85114885114885,48.95104895104895,49.05094905094905,49.15084915084915,49.25074925074925,49.35064935064935,49.45054945054945,49.55044955044955,49.65034965034965,49.75024975024975,49.85014985014985,49.95004995004995,50.04995004995005,50.14985014985015,50.24975024975025,50.34965034965035,50.44955044955045,50.54945054945055,50.64935064935065,50.74925074925075,50.84915084915085,50.94905094905095,51.04895104895105,51.14885114885115,51.24875124875125,51.34865134865135,51.44855144855145,51.548451548451546,51.64835164835165,51.74825174825175,51.84815184815185,51.94805194805195,52.047952047952045,52.14785214785215,52.247752247752246,52.34765234765235,52.44755244755245,52.54745254745255,52.64735264735265,52.747252747252745,52.84715284715285,52.947052947052946,53.04695304695305,53.14685314685315,53.246753246753244,53.34665334665335,53.446553446553445,53.54645354645355,53.646353646353646,53.74625374625375,53.84615384615385,53.946053946053944,54.04595404595405,54.145854145854145,54.24575424575425,54.345654345654346,54.44555444555444,54.54545454545455,54.645354645354644,54.74525474525475,54.845154845154845,54.94505494505494,55.044955044955046,55.14485514485514,55.24475524475525,55.344655344655344,55.44455544455545,55.544455544455545,55.64435564435564,55.744255744255746,55.84415584415584,55.94405594405595,56.043956043956044,56.14385614385614,56.243756243756245,56.34365634365634,56.443556443556446,56.54345654345654,56.64335664335665,56.743256743256744,56.84315684315684,56.943056943056945,57.04295704295704,57.142857142857146,57.24275724275724,57.34265734265734,57.442557442557444,57.54245754245754,57.642357642357645,57.74225774225774,57.84215784215784,57.94205794205794,58.04195804195804,58.141858141858144,58.24175824175824,58.341658341658345,58.44155844155844,58.54145854145854,58.64135864135864,58.74125874125874,58.841158841158844,58.94105894105894,59.04095904095904,59.14085914085914,59.24075924075924,59.34065934065934,59.44055944055944,59.54045954045954,59.64035964035964,59.74025974025974,59.84015984015984,59.94005994005994,60.03996003996004,60.13986013986014,60.23976023976024,60.33966033966034,60.43956043956044,60.53946053946054,60.63936063936064,60.739260739260736,60.83916083916084,60.93906093906094,61.03896103896104,61.13886113886114,61.23876123876124,61.33866133866134,61.438561438561436,61.53846153846154,61.63836163836164,61.73826173826174,61.83816183816184,61.938061938061935,62.03796203796204,62.137862137862136,62.23776223776224,62.33766233766234,62.437562437562434,62.53746253746254,62.637362637362635,62.73726273726274,62.837162837162836,62.93706293706294,63.03696303696304,63.136863136863134,63.23676323676324,63.336663336663335,63.43656343656344,63.536463536463536,63.63636363636363,63.73626373626374,63.836163836163834,63.93606393606394,64.03596403596404,64.13586413586414,64.23576423576424,64.33566433566433,64.43556443556443,64.53546453546454,64.63536463536464,64.73526473526474,64.83516483516483,64.93506493506493,65.03496503496504,65.13486513486514,65.23476523476523,65.33466533466533,65.43456543456543,65.53446553446554,65.63436563436564,65.73426573426573,65.83416583416583,65.93406593406593,66.03396603396604,66.13386613386614,66.23376623376623,66.33366633366633,66.43356643356644,66.53346653346654,66.63336663336663,66.73326673326673,66.83316683316683,66.93306693306694,67.03296703296704,67.13286713286713,67.23276723276723,67.33266733266733,67.43256743256744,67.53246753246754,67.63236763236763,67.73226773226773,67.83216783216783,67.93206793206794,68.03196803196803,68.13186813186813,68.23176823176823,68.33166833166833,68.43156843156844,68.53146853146853,68.63136863136863,68.73126873126873,68.83116883116882,68.93106893106894,69.03096903096903,69.13086913086913,69.23076923076923,69.33066933066934,69.43056943056943,69.53046953046953,69.63036963036963,69.73026973026973,69.83016983016984,69.93006993006993,70.02997002997003,70.12987012987013,70.22977022977022,70.32967032967034,70.42957042957043,70.52947052947053,70.62937062937063,70.72927072927072,70.82917082917083,70.92907092907093,71.02897102897103,71.12887112887113,71.22877122877122,71.32867132867133,71.42857142857143,71.52847152847153,71.62837162837162,71.72827172827172,71.82817182817183,71.92807192807193,72.02797202797203,72.12787212787212,72.22777222777223,72.32767232767233,72.42757242757243,72.52747252747253,72.62737262737262,72.72727272727273,72.82717282717283,72.92707292707293,73.02697302697302,73.12687312687312,73.22677322677323,73.32667332667333,73.42657342657343,73.52647352647352,73.62637362637362,73.72627372627373,73.82617382617383,73.92607392607393,74.02597402597402,74.12587412587412,74.22577422577423,74.32567432567433,74.42557442557442,74.52547452547452,74.62537462537462,74.72527472527473,74.82517482517483,74.92507492507492,75.02497502497502,75.12487512487513,75.22477522477523,75.32467532467533,75.42457542457542,75.52447552447552,75.62437562437563,75.72427572427573,75.82417582417582,75.92407592407592,76.02397602397602,76.12387612387613,76.22377622377623,76.32367632367632,76.42357642357642,76.52347652347652,76.62337662337663,76.72327672327673,76.82317682317682,76.92307692307692,77.02297702297702,77.12287712287713,77.22277722277722,77.32267732267732,77.42257742257742,77.52247752247752,77.62237762237763,77.72227772227772,77.82217782217782,77.92207792207792,78.02197802197803,78.12187812187813,78.22177822177822,78.32167832167832,78.42157842157842,78.52147852147853,78.62137862137862,78.72127872127872,78.82117882117882,78.92107892107892,79.02097902097903,79.12087912087912,79.22077922077922,79.32067932067932,79.42057942057941,79.52047952047953,79.62037962037962,79.72027972027972,79.82017982017982,79.92007992007991,80.01998001998003,80.11988011988012,80.21978021978022,80.31968031968032,80.41958041958041,80.51948051948052,80.61938061938062,80.71928071928072,80.81918081918081,80.91908091908093,81.01898101898102,81.11888111888112,81.21878121878122,81.31868131868131,81.41858141858143,81.51848151848152,81.61838161838162,81.71828171828172,81.81818181818181,81.91808191808192,82.01798201798202,82.11788211788212,82.21778221778222,82.31768231768231,82.41758241758242,82.51748251748252,82.61738261738262,82.71728271728271,82.81718281718281,82.91708291708292,83.01698301698302,83.11688311688312,83.21678321678321,83.31668331668331,83.41658341658342,83.51648351648352,83.61638361638362,83.71628371628371,83.81618381618381,83.91608391608392,84.01598401598402,84.11588411588411,84.21578421578421,84.31568431568432,84.41558441558442,84.51548451548452,84.61538461538461,84.71528471528471,84.81518481518482,84.91508491508492,85.01498501498502,85.11488511488511,85.21478521478521,85.31468531468532,85.41458541458542,85.51448551448551,85.61438561438561,85.71428571428571,85.81418581418582,85.91408591408592,86.01398601398601,86.11388611388611,86.21378621378621,86.31368631368632,86.41358641358642,86.51348651348651,86.61338661338661,86.7132867132867,86.81318681318682,86.91308691308691,87.01298701298701,87.11288711288711,87.21278721278722,87.31268731268732,87.41258741258741,87.51248751248751,87.61238761238761,87.71228771228772,87.81218781218782,87.91208791208791,88.01198801198801,88.1118881118881,88.21178821178822,88.31168831168831,88.41158841158841,88.51148851148851,88.6113886113886,88.71128871128872,88.81118881118881,88.91108891108891,89.01098901098901,89.1108891108891,89.21078921078922,89.31068931068931,89.41058941058941,89.5104895104895,89.6103896103896,89.71028971028971,89.81018981018981,89.91008991008991,90.00999000999,90.10989010989012,90.20979020979021,90.30969030969031,90.40959040959041,90.5094905094905,90.60939060939062,90.70929070929071,90.80919080919081,90.9090909090909,91.008991008991,91.10889110889111,91.20879120879121,91.30869130869131,91.4085914085914,91.5084915084915,91.60839160839161,91.70829170829171,91.80819180819181,91.9080919080919,92.007992007992,92.10789210789211,92.20779220779221,92.3076923076923,92.4075924075924,92.5074925074925,92.60739260739261,92.70729270729271,92.8071928071928,92.9070929070929,93.00699300699301,93.10689310689311,93.20679320679321,93.3066933066933,93.4065934065934,93.50649350649351,93.60639360639361,93.7062937062937,93.8061938061938,93.9060939060939,94.00599400599401,94.10589410589411,94.2057942057942,94.3056943056943,94.4055944055944,94.50549450549451,94.60539460539461,94.7052947052947,94.8051948051948,94.9050949050949,95.00499500499501,95.1048951048951,95.2047952047952,95.3046953046953,95.4045954045954,95.50449550449551,95.6043956043956,95.7042957042957,95.8041958041958,95.90409590409591,96.00399600399601,96.1038961038961,96.2037962037962,96.3036963036963,96.40359640359641,96.5034965034965,96.6033966033966,96.7032967032967,96.8031968031968,96.90309690309691,97.002997002997,97.1028971028971,97.2027972027972,97.3026973026973,97.40259740259741,97.5024975024975,97.6023976023976,97.7022977022977,97.8021978021978,97.9020979020979,98.001998001998,98.1018981018981,98.2017982017982,98.3016983016983,98.4015984015984,98.5014985014985,98.6013986013986,98.7012987012987,98.80119880119881,98.9010989010989,99.000999000999,99.1008991008991,99.2007992007992,99.3006993006993,99.4005994005994,99.5004995004995,99.6003996003996,99.7002997002997,99.8001998001998,99.9000999000999,100.0]} diff --git a/lib/node_modules/@stdlib/math/base/special/sinpif/test/fixtures/julia/integers.json b/lib/node_modules/@stdlib/math/base/special/sinpif/test/fixtures/julia/integers.json new file mode 100644 index 000000000000..4cb9d3a75ffc --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sinpif/test/fixtures/julia/integers.json @@ -0,0 +1 @@ +{"expected":[-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"x":[-1000.0,-999.0,-998.0,-997.0,-996.0,-995.0,-994.0,-993.0,-992.0,-991.0,-990.0,-989.0,-988.0,-987.0,-986.0,-985.0,-984.0,-983.0,-982.0,-981.0,-980.0,-979.0,-978.0,-977.0,-976.0,-975.0,-974.0,-973.0,-972.0,-971.0,-970.0,-969.0,-968.0,-967.0,-966.0,-965.0,-964.0,-963.0,-962.0,-961.0,-960.0,-959.0,-958.0,-957.0,-956.0,-955.0,-954.0,-953.0,-952.0,-951.0,-950.0,-949.0,-948.0,-947.0,-946.0,-945.0,-944.0,-943.0,-942.0,-941.0,-940.0,-939.0,-938.0,-937.0,-936.0,-935.0,-934.0,-933.0,-932.0,-931.0,-930.0,-929.0,-928.0,-927.0,-926.0,-925.0,-924.0,-923.0,-922.0,-921.0,-920.0,-919.0,-918.0,-917.0,-916.0,-915.0,-914.0,-913.0,-912.0,-911.0,-910.0,-909.0,-908.0,-907.0,-906.0,-905.0,-904.0,-903.0,-902.0,-901.0,-900.0,-899.0,-898.0,-897.0,-896.0,-895.0,-894.0,-893.0,-892.0,-891.0,-890.0,-889.0,-888.0,-887.0,-886.0,-885.0,-884.0,-883.0,-882.0,-881.0,-880.0,-879.0,-878.0,-877.0,-876.0,-875.0,-874.0,-873.0,-872.0,-871.0,-870.0,-869.0,-868.0,-867.0,-866.0,-865.0,-864.0,-863.0,-862.0,-861.0,-860.0,-859.0,-858.0,-857.0,-856.0,-855.0,-854.0,-853.0,-852.0,-851.0,-850.0,-849.0,-848.0,-847.0,-846.0,-845.0,-844.0,-843.0,-842.0,-841.0,-840.0,-839.0,-838.0,-837.0,-836.0,-835.0,-834.0,-833.0,-832.0,-831.0,-830.0,-829.0,-828.0,-827.0,-826.0,-825.0,-824.0,-823.0,-822.0,-821.0,-820.0,-819.0,-818.0,-817.0,-816.0,-815.0,-814.0,-813.0,-812.0,-811.0,-810.0,-809.0,-808.0,-807.0,-806.0,-805.0,-804.0,-803.0,-802.0,-801.0,-800.0,-799.0,-798.0,-797.0,-796.0,-795.0,-794.0,-793.0,-792.0,-791.0,-790.0,-789.0,-788.0,-787.0,-786.0,-785.0,-784.0,-783.0,-782.0,-781.0,-780.0,-779.0,-778.0,-777.0,-776.0,-775.0,-774.0,-773.0,-772.0,-771.0,-770.0,-769.0,-768.0,-767.0,-766.0,-765.0,-764.0,-763.0,-762.0,-761.0,-760.0,-759.0,-758.0,-757.0,-756.0,-755.0,-754.0,-753.0,-752.0,-751.0,-750.0,-749.0,-748.0,-747.0,-746.0,-745.0,-744.0,-743.0,-742.0,-741.0,-740.0,-739.0,-738.0,-737.0,-736.0,-735.0,-734.0,-733.0,-732.0,-731.0,-730.0,-729.0,-728.0,-727.0,-726.0,-725.0,-724.0,-723.0,-722.0,-721.0,-720.0,-719.0,-718.0,-717.0,-716.0,-715.0,-714.0,-713.0,-712.0,-711.0,-710.0,-709.0,-708.0,-707.0,-706.0,-705.0,-704.0,-703.0,-702.0,-701.0,-700.0,-699.0,-698.0,-697.0,-696.0,-695.0,-694.0,-693.0,-692.0,-691.0,-690.0,-689.0,-688.0,-687.0,-686.0,-685.0,-684.0,-683.0,-682.0,-681.0,-680.0,-679.0,-678.0,-677.0,-676.0,-675.0,-674.0,-673.0,-672.0,-671.0,-670.0,-669.0,-668.0,-667.0,-666.0,-665.0,-664.0,-663.0,-662.0,-661.0,-660.0,-659.0,-658.0,-657.0,-656.0,-655.0,-654.0,-653.0,-652.0,-651.0,-650.0,-649.0,-648.0,-647.0,-646.0,-645.0,-644.0,-643.0,-642.0,-641.0,-640.0,-639.0,-638.0,-637.0,-636.0,-635.0,-634.0,-633.0,-632.0,-631.0,-630.0,-629.0,-628.0,-627.0,-626.0,-625.0,-624.0,-623.0,-622.0,-621.0,-620.0,-619.0,-618.0,-617.0,-616.0,-615.0,-614.0,-613.0,-612.0,-611.0,-610.0,-609.0,-608.0,-607.0,-606.0,-605.0,-604.0,-603.0,-602.0,-601.0,-600.0,-599.0,-598.0,-597.0,-596.0,-595.0,-594.0,-593.0,-592.0,-591.0,-590.0,-589.0,-588.0,-587.0,-586.0,-585.0,-584.0,-583.0,-582.0,-581.0,-580.0,-579.0,-578.0,-577.0,-576.0,-575.0,-574.0,-573.0,-572.0,-571.0,-570.0,-569.0,-568.0,-567.0,-566.0,-565.0,-564.0,-563.0,-562.0,-561.0,-560.0,-559.0,-558.0,-557.0,-556.0,-555.0,-554.0,-553.0,-552.0,-551.0,-550.0,-549.0,-548.0,-547.0,-546.0,-545.0,-544.0,-543.0,-542.0,-541.0,-540.0,-539.0,-538.0,-537.0,-536.0,-535.0,-534.0,-533.0,-532.0,-531.0,-530.0,-529.0,-528.0,-527.0,-526.0,-525.0,-524.0,-523.0,-522.0,-521.0,-520.0,-519.0,-518.0,-517.0,-516.0,-515.0,-514.0,-513.0,-512.0,-511.0,-510.0,-509.0,-508.0,-507.0,-506.0,-505.0,-504.0,-503.0,-502.0,-501.0,-500.0,-499.0,-498.0,-497.0,-496.0,-495.0,-494.0,-493.0,-492.0,-491.0,-490.0,-489.0,-488.0,-487.0,-486.0,-485.0,-484.0,-483.0,-482.0,-481.0,-480.0,-479.0,-478.0,-477.0,-476.0,-475.0,-474.0,-473.0,-472.0,-471.0,-470.0,-469.0,-468.0,-467.0,-466.0,-465.0,-464.0,-463.0,-462.0,-461.0,-460.0,-459.0,-458.0,-457.0,-456.0,-455.0,-454.0,-453.0,-452.0,-451.0,-450.0,-449.0,-448.0,-447.0,-446.0,-445.0,-444.0,-443.0,-442.0,-441.0,-440.0,-439.0,-438.0,-437.0,-436.0,-435.0,-434.0,-433.0,-432.0,-431.0,-430.0,-429.0,-428.0,-427.0,-426.0,-425.0,-424.0,-423.0,-422.0,-421.0,-420.0,-419.0,-418.0,-417.0,-416.0,-415.0,-414.0,-413.0,-412.0,-411.0,-410.0,-409.0,-408.0,-407.0,-406.0,-405.0,-404.0,-403.0,-402.0,-401.0,-400.0,-399.0,-398.0,-397.0,-396.0,-395.0,-394.0,-393.0,-392.0,-391.0,-390.0,-389.0,-388.0,-387.0,-386.0,-385.0,-384.0,-383.0,-382.0,-381.0,-380.0,-379.0,-378.0,-377.0,-376.0,-375.0,-374.0,-373.0,-372.0,-371.0,-370.0,-369.0,-368.0,-367.0,-366.0,-365.0,-364.0,-363.0,-362.0,-361.0,-360.0,-359.0,-358.0,-357.0,-356.0,-355.0,-354.0,-353.0,-352.0,-351.0,-350.0,-349.0,-348.0,-347.0,-346.0,-345.0,-344.0,-343.0,-342.0,-341.0,-340.0,-339.0,-338.0,-337.0,-336.0,-335.0,-334.0,-333.0,-332.0,-331.0,-330.0,-329.0,-328.0,-327.0,-326.0,-325.0,-324.0,-323.0,-322.0,-321.0,-320.0,-319.0,-318.0,-317.0,-316.0,-315.0,-314.0,-313.0,-312.0,-311.0,-310.0,-309.0,-308.0,-307.0,-306.0,-305.0,-304.0,-303.0,-302.0,-301.0,-300.0,-299.0,-298.0,-297.0,-296.0,-295.0,-294.0,-293.0,-292.0,-291.0,-290.0,-289.0,-288.0,-287.0,-286.0,-285.0,-284.0,-283.0,-282.0,-281.0,-280.0,-279.0,-278.0,-277.0,-276.0,-275.0,-274.0,-273.0,-272.0,-271.0,-270.0,-269.0,-268.0,-267.0,-266.0,-265.0,-264.0,-263.0,-262.0,-261.0,-260.0,-259.0,-258.0,-257.0,-256.0,-255.0,-254.0,-253.0,-252.0,-251.0,-250.0,-249.0,-248.0,-247.0,-246.0,-245.0,-244.0,-243.0,-242.0,-241.0,-240.0,-239.0,-238.0,-237.0,-236.0,-235.0,-234.0,-233.0,-232.0,-231.0,-230.0,-229.0,-228.0,-227.0,-226.0,-225.0,-224.0,-223.0,-222.0,-221.0,-220.0,-219.0,-218.0,-217.0,-216.0,-215.0,-214.0,-213.0,-212.0,-211.0,-210.0,-209.0,-208.0,-207.0,-206.0,-205.0,-204.0,-203.0,-202.0,-201.0,-200.0,-199.0,-198.0,-197.0,-196.0,-195.0,-194.0,-193.0,-192.0,-191.0,-190.0,-189.0,-188.0,-187.0,-186.0,-185.0,-184.0,-183.0,-182.0,-181.0,-180.0,-179.0,-178.0,-177.0,-176.0,-175.0,-174.0,-173.0,-172.0,-171.0,-170.0,-169.0,-168.0,-167.0,-166.0,-165.0,-164.0,-163.0,-162.0,-161.0,-160.0,-159.0,-158.0,-157.0,-156.0,-155.0,-154.0,-153.0,-152.0,-151.0,-150.0,-149.0,-148.0,-147.0,-146.0,-145.0,-144.0,-143.0,-142.0,-141.0,-140.0,-139.0,-138.0,-137.0,-136.0,-135.0,-134.0,-133.0,-132.0,-131.0,-130.0,-129.0,-128.0,-127.0,-126.0,-125.0,-124.0,-123.0,-122.0,-121.0,-120.0,-119.0,-118.0,-117.0,-116.0,-115.0,-114.0,-113.0,-112.0,-111.0,-110.0,-109.0,-108.0,-107.0,-106.0,-105.0,-104.0,-103.0,-102.0,-101.0,-100.0,-99.0,-98.0,-97.0,-96.0,-95.0,-94.0,-93.0,-92.0,-91.0,-90.0,-89.0,-88.0,-87.0,-86.0,-85.0,-84.0,-83.0,-82.0,-81.0,-80.0,-79.0,-78.0,-77.0,-76.0,-75.0,-74.0,-73.0,-72.0,-71.0,-70.0,-69.0,-68.0,-67.0,-66.0,-65.0,-64.0,-63.0,-62.0,-61.0,-60.0,-59.0,-58.0,-57.0,-56.0,-55.0,-54.0,-53.0,-52.0,-51.0,-50.0,-49.0,-48.0,-47.0,-46.0,-45.0,-44.0,-43.0,-42.0,-41.0,-40.0,-39.0,-38.0,-37.0,-36.0,-35.0,-34.0,-33.0,-32.0,-31.0,-30.0,-29.0,-28.0,-27.0,-26.0,-25.0,-24.0,-23.0,-22.0,-21.0,-20.0,-19.0,-18.0,-17.0,-16.0,-15.0,-14.0,-13.0,-12.0,-11.0,-10.0,-9.0,-8.0,-7.0,-6.0,-5.0,-4.0,-3.0,-2.0,-1.0,0.0,1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0,17.0,18.0,19.0,20.0,21.0,22.0,23.0,24.0,25.0,26.0,27.0,28.0,29.0,30.0,31.0,32.0,33.0,34.0,35.0,36.0,37.0,38.0,39.0,40.0,41.0,42.0,43.0,44.0,45.0,46.0,47.0,48.0,49.0,50.0,51.0,52.0,53.0,54.0,55.0,56.0,57.0,58.0,59.0,60.0,61.0,62.0,63.0,64.0,65.0,66.0,67.0,68.0,69.0,70.0,71.0,72.0,73.0,74.0,75.0,76.0,77.0,78.0,79.0,80.0,81.0,82.0,83.0,84.0,85.0,86.0,87.0,88.0,89.0,90.0,91.0,92.0,93.0,94.0,95.0,96.0,97.0,98.0,99.0,100.0,101.0,102.0,103.0,104.0,105.0,106.0,107.0,108.0,109.0,110.0,111.0,112.0,113.0,114.0,115.0,116.0,117.0,118.0,119.0,120.0,121.0,122.0,123.0,124.0,125.0,126.0,127.0,128.0,129.0,130.0,131.0,132.0,133.0,134.0,135.0,136.0,137.0,138.0,139.0,140.0,141.0,142.0,143.0,144.0,145.0,146.0,147.0,148.0,149.0,150.0,151.0,152.0,153.0,154.0,155.0,156.0,157.0,158.0,159.0,160.0,161.0,162.0,163.0,164.0,165.0,166.0,167.0,168.0,169.0,170.0,171.0,172.0,173.0,174.0,175.0,176.0,177.0,178.0,179.0,180.0,181.0,182.0,183.0,184.0,185.0,186.0,187.0,188.0,189.0,190.0,191.0,192.0,193.0,194.0,195.0,196.0,197.0,198.0,199.0,200.0,201.0,202.0,203.0,204.0,205.0,206.0,207.0,208.0,209.0,210.0,211.0,212.0,213.0,214.0,215.0,216.0,217.0,218.0,219.0,220.0,221.0,222.0,223.0,224.0,225.0,226.0,227.0,228.0,229.0,230.0,231.0,232.0,233.0,234.0,235.0,236.0,237.0,238.0,239.0,240.0,241.0,242.0,243.0,244.0,245.0,246.0,247.0,248.0,249.0,250.0,251.0,252.0,253.0,254.0,255.0,256.0,257.0,258.0,259.0,260.0,261.0,262.0,263.0,264.0,265.0,266.0,267.0,268.0,269.0,270.0,271.0,272.0,273.0,274.0,275.0,276.0,277.0,278.0,279.0,280.0,281.0,282.0,283.0,284.0,285.0,286.0,287.0,288.0,289.0,290.0,291.0,292.0,293.0,294.0,295.0,296.0,297.0,298.0,299.0,300.0,301.0,302.0,303.0,304.0,305.0,306.0,307.0,308.0,309.0,310.0,311.0,312.0,313.0,314.0,315.0,316.0,317.0,318.0,319.0,320.0,321.0,322.0,323.0,324.0,325.0,326.0,327.0,328.0,329.0,330.0,331.0,332.0,333.0,334.0,335.0,336.0,337.0,338.0,339.0,340.0,341.0,342.0,343.0,344.0,345.0,346.0,347.0,348.0,349.0,350.0,351.0,352.0,353.0,354.0,355.0,356.0,357.0,358.0,359.0,360.0,361.0,362.0,363.0,364.0,365.0,366.0,367.0,368.0,369.0,370.0,371.0,372.0,373.0,374.0,375.0,376.0,377.0,378.0,379.0,380.0,381.0,382.0,383.0,384.0,385.0,386.0,387.0,388.0,389.0,390.0,391.0,392.0,393.0,394.0,395.0,396.0,397.0,398.0,399.0,400.0,401.0,402.0,403.0,404.0,405.0,406.0,407.0,408.0,409.0,410.0,411.0,412.0,413.0,414.0,415.0,416.0,417.0,418.0,419.0,420.0,421.0,422.0,423.0,424.0,425.0,426.0,427.0,428.0,429.0,430.0,431.0,432.0,433.0,434.0,435.0,436.0,437.0,438.0,439.0,440.0,441.0,442.0,443.0,444.0,445.0,446.0,447.0,448.0,449.0,450.0,451.0,452.0,453.0,454.0,455.0,456.0,457.0,458.0,459.0,460.0,461.0,462.0,463.0,464.0,465.0,466.0,467.0,468.0,469.0,470.0,471.0,472.0,473.0,474.0,475.0,476.0,477.0,478.0,479.0,480.0,481.0,482.0,483.0,484.0,485.0,486.0,487.0,488.0,489.0,490.0,491.0,492.0,493.0,494.0,495.0,496.0,497.0,498.0,499.0,500.0,501.0,502.0,503.0,504.0,505.0,506.0,507.0,508.0,509.0,510.0,511.0,512.0,513.0,514.0,515.0,516.0,517.0,518.0,519.0,520.0,521.0,522.0,523.0,524.0,525.0,526.0,527.0,528.0,529.0,530.0,531.0,532.0,533.0,534.0,535.0,536.0,537.0,538.0,539.0,540.0,541.0,542.0,543.0,544.0,545.0,546.0,547.0,548.0,549.0,550.0,551.0,552.0,553.0,554.0,555.0,556.0,557.0,558.0,559.0,560.0,561.0,562.0,563.0,564.0,565.0,566.0,567.0,568.0,569.0,570.0,571.0,572.0,573.0,574.0,575.0,576.0,577.0,578.0,579.0,580.0,581.0,582.0,583.0,584.0,585.0,586.0,587.0,588.0,589.0,590.0,591.0,592.0,593.0,594.0,595.0,596.0,597.0,598.0,599.0,600.0,601.0,602.0,603.0,604.0,605.0,606.0,607.0,608.0,609.0,610.0,611.0,612.0,613.0,614.0,615.0,616.0,617.0,618.0,619.0,620.0,621.0,622.0,623.0,624.0,625.0,626.0,627.0,628.0,629.0,630.0,631.0,632.0,633.0,634.0,635.0,636.0,637.0,638.0,639.0,640.0,641.0,642.0,643.0,644.0,645.0,646.0,647.0,648.0,649.0,650.0,651.0,652.0,653.0,654.0,655.0,656.0,657.0,658.0,659.0,660.0,661.0,662.0,663.0,664.0,665.0,666.0,667.0,668.0,669.0,670.0,671.0,672.0,673.0,674.0,675.0,676.0,677.0,678.0,679.0,680.0,681.0,682.0,683.0,684.0,685.0,686.0,687.0,688.0,689.0,690.0,691.0,692.0,693.0,694.0,695.0,696.0,697.0,698.0,699.0,700.0,701.0,702.0,703.0,704.0,705.0,706.0,707.0,708.0,709.0,710.0,711.0,712.0,713.0,714.0,715.0,716.0,717.0,718.0,719.0,720.0,721.0,722.0,723.0,724.0,725.0,726.0,727.0,728.0,729.0,730.0,731.0,732.0,733.0,734.0,735.0,736.0,737.0,738.0,739.0,740.0,741.0,742.0,743.0,744.0,745.0,746.0,747.0,748.0,749.0,750.0,751.0,752.0,753.0,754.0,755.0,756.0,757.0,758.0,759.0,760.0,761.0,762.0,763.0,764.0,765.0,766.0,767.0,768.0,769.0,770.0,771.0,772.0,773.0,774.0,775.0,776.0,777.0,778.0,779.0,780.0,781.0,782.0,783.0,784.0,785.0,786.0,787.0,788.0,789.0,790.0,791.0,792.0,793.0,794.0,795.0,796.0,797.0,798.0,799.0,800.0,801.0,802.0,803.0,804.0,805.0,806.0,807.0,808.0,809.0,810.0,811.0,812.0,813.0,814.0,815.0,816.0,817.0,818.0,819.0,820.0,821.0,822.0,823.0,824.0,825.0,826.0,827.0,828.0,829.0,830.0,831.0,832.0,833.0,834.0,835.0,836.0,837.0,838.0,839.0,840.0,841.0,842.0,843.0,844.0,845.0,846.0,847.0,848.0,849.0,850.0,851.0,852.0,853.0,854.0,855.0,856.0,857.0,858.0,859.0,860.0,861.0,862.0,863.0,864.0,865.0,866.0,867.0,868.0,869.0,870.0,871.0,872.0,873.0,874.0,875.0,876.0,877.0,878.0,879.0,880.0,881.0,882.0,883.0,884.0,885.0,886.0,887.0,888.0,889.0,890.0,891.0,892.0,893.0,894.0,895.0,896.0,897.0,898.0,899.0,900.0,901.0,902.0,903.0,904.0,905.0,906.0,907.0,908.0,909.0,910.0,911.0,912.0,913.0,914.0,915.0,916.0,917.0,918.0,919.0,920.0,921.0,922.0,923.0,924.0,925.0,926.0,927.0,928.0,929.0,930.0,931.0,932.0,933.0,934.0,935.0,936.0,937.0,938.0,939.0,940.0,941.0,942.0,943.0,944.0,945.0,946.0,947.0,948.0,949.0,950.0,951.0,952.0,953.0,954.0,955.0,956.0,957.0,958.0,959.0,960.0,961.0,962.0,963.0,964.0,965.0,966.0,967.0,968.0,969.0,970.0,971.0,972.0,973.0,974.0,975.0,976.0,977.0,978.0,979.0,980.0,981.0,982.0,983.0,984.0,985.0,986.0,987.0,988.0,989.0,990.0,991.0,992.0,993.0,994.0,995.0,996.0,997.0,998.0,999.0,1000.0]} diff --git a/lib/node_modules/@stdlib/math/base/special/sinpif/test/fixtures/julia/runner.jl b/lib/node_modules/@stdlib/math/base/special/sinpif/test/fixtures/julia/runner.jl new file mode 100644 index 000000000000..3605ae8de071 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sinpif/test/fixtures/julia/runner.jl @@ -0,0 +1,70 @@ +#!/usr/bin/env julia +# +# @license Apache-2.0 +# +# Copyright (c) 2018 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT 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 JSON + +""" + gen( domain, name ) + +Generate fixture data and write to file. + +# Arguments + +* `domain`: domain +* `name::AbstractString`: output filename + +# Examples + +``` julia +julia> x = range( -1000, stop = 1000, length = 2001 ); +julia> gen( x, \"data.json\" ); +``` +""" +function gen( domain, name ) + x = collect( domain ); + y = sinpi.( x ); + + # Store data to be written to file as a collection: + data = Dict([ + ("x", x), + ("expected", y) + ]); + + # Based on the script directory, create an output filepath: + filepath = joinpath( dir, name ); + + # Write the data to the output filepath as JSON: + outfile = open( filepath, "w" ); + write( outfile, JSON.json(data) ); + write( outfile, "\n" ); + close( outfile ); +end + +# Get the filename: +file = @__FILE__; + +# Extract the directory in which this file resides: +dir = dirname( file ); + +# Integer values: +x = range( -1000, stop = 1000, length = 2001 ); +gen( x, "integers.json" ); + +# Decimal values: +x = range( -100, stop = 100, length = 2003 ); +gen( x, "decimals.json" ); diff --git a/lib/node_modules/@stdlib/math/base/special/sinpif/test/test.js b/lib/node_modules/@stdlib/math/base/special/sinpif/test/test.js new file mode 100644 index 000000000000..fed94149242f --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sinpif/test/test.js @@ -0,0 +1,124 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var PINF = require( '@stdlib/constants/float64/pinf' ); +var NINF = require( '@stdlib/constants/float64/ninf' ); +var EPS = require( '@stdlib/constants/float64/eps' ); +var abs = require( '@stdlib/math/base/special/abs' ); +var isNegativeZero = require( '@stdlib/assert/is-negative-zero' ); +var isPositiveZero = require( '@stdlib/assert/is-positive-zero' ); +var isSameValue = require( '@stdlib/assert/is-same-value' ); +var sinpi = require( './../lib/' ); + + +// FIXTURES // + +var integers = require( './fixtures/julia/integers.json' ); +var decimals = require( './fixtures/julia/decimals.json' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sinpi, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns `NaN` if provided either positive or negative infinity', function test( t ) { + var v = sinpi( PINF ); + t.strictEqual( isnan( v ), true, 'returns expected value' ); + v = sinpi( NINF ); + t.strictEqual( isnan( v ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'if provided `NaN`, the function returns `NaN`', function test( t ) { + var y = sinpi( NaN ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function returns `-0` if provided `-0`', function test( t ) { + var v = sinpi( -0.0 ); + t.strictEqual( isNegativeZero( v ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function returns `+0` if provided `+0`', function test( t ) { + var v = sinpi( 0.0 ); + t.strictEqual( isPositiveZero( v ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'if provided an integer, the function returns `+-0`', function test( t ) { + var expected; + var x; + var y; + var i; + + x = integers.x; + expected = integers.expected; + for ( i = 0; i < x.length; i++ ) { + y = sinpi( x[i] ); + t.strictEqual( isSameValue( y, expected[ i ] ), true, 'returns '+expected[ i ] ); + } + t.end(); +}); + +tape( 'the function is odd', function test( t ) { + var expected; + var x; + var y; + var i; + + x = decimals.x; + for ( i = 0; i < x.length; i++ ) { + y = sinpi( -x[i] ); + expected = -sinpi( x[i] ); + t.strictEqual( y, expected, 'returns '+expected ); + } + t.end(); +}); + +tape( 'the function computes `sin(πx)`', function test( t ) { + var expected; + var delta; + var x; + var y; + var i; + + x = decimals.x; + expected = decimals.expected; + for ( i = 0; i < x.length; i++ ) { + y = sinpi( x[i] ); + if ( y === expected[ i ] ) { + t.strictEqual( y, expected[ i ], 'x: '+x[i]+'. Expected: '+expected[i] ); + } else { + delta = abs( y - expected[i] ); + t.ok( delta <= EPS, 'within tolerance. x: '+x[i]+'. Value: '+y+'. Expected: '+expected[i]+'. Tolerance: '+EPS+'.' ); + } + } + t.end(); +}); diff --git a/lib/node_modules/@stdlib/math/base/special/sinpif/test/test.native.js b/lib/node_modules/@stdlib/math/base/special/sinpif/test/test.native.js new file mode 100644 index 000000000000..b92a2b437115 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sinpif/test/test.native.js @@ -0,0 +1,133 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var PINF = require( '@stdlib/constants/float64/pinf' ); +var NINF = require( '@stdlib/constants/float64/ninf' ); +var EPS = require( '@stdlib/constants/float64/eps' ); +var abs = require( '@stdlib/math/base/special/abs' ); +var isNegativeZero = require( '@stdlib/assert/is-negative-zero' ); +var isPositiveZero = require( '@stdlib/assert/is-positive-zero' ); +var isSameValue = require( '@stdlib/assert/is-same-value' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var sinpi = tryRequire( resolve( __dirname, './../lib/native.js' ) ); +var opts = { + 'skip': ( sinpi instanceof Error ) +}; + + +// FIXTURES // + +var integers = require( './fixtures/julia/integers.json' ); +var decimals = require( './fixtures/julia/decimals.json' ); + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sinpi, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns `NaN` if provided either positive or negative infinity', opts, function test( t ) { + var v = sinpi( PINF ); + t.strictEqual( isnan( v ), true, 'returns expected value' ); + v = sinpi( NINF ); + t.strictEqual( isnan( v ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'if provided `NaN`, the function returns `NaN`', opts, function test( t ) { + var y = sinpi( NaN ); + t.strictEqual( isnan( y ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function returns `-0` if provided `-0`', opts, function test( t ) { + var v = sinpi( -0.0 ); + t.strictEqual( isNegativeZero( v ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function returns `+0` if provided `+0`', opts, function test( t ) { + var v = sinpi( 0.0 ); + t.strictEqual( isPositiveZero( v ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'if provided an integer, the function returns `+-0`', opts, function test( t ) { + var expected; + var x; + var y; + var i; + + x = integers.x; + expected = integers.expected; + for ( i = 0; i < x.length; i++ ) { + y = sinpi( x[i] ); + t.strictEqual( isSameValue( y, expected[ i ] ), true, 'returns '+expected[ i ] ); + } + t.end(); +}); + +tape( 'the function is odd', opts, function test( t ) { + var expected; + var x; + var y; + var i; + + x = decimals.x; + for ( i = 0; i < x.length; i++ ) { + y = sinpi( -x[i] ); + expected = -sinpi( x[i] ); + t.strictEqual( y, expected, 'returns '+expected ); + } + t.end(); +}); + +tape( 'the function computes `sin(πx)`', opts, function test( t ) { + var expected; + var delta; + var x; + var y; + var i; + + x = decimals.x; + expected = decimals.expected; + for ( i = 0; i < x.length; i++ ) { + y = sinpi( x[i] ); + if ( y === expected[ i ] ) { + t.strictEqual( y, expected[ i ], 'x: '+x[i]+'. Expected: '+expected[i] ); + } else { + delta = abs( y - expected[i] ); + t.ok( delta <= EPS, 'within tolerance. x: '+x[i]+'. Value: '+y+'. Expected: '+expected[i]+'. Tolerance: '+EPS+'.' ); + } + } + t.end(); +}); From e360ede96ff6cebc99250647939161e6b82c3351 Mon Sep 17 00:00:00 2001 From: Karan Anand Date: Tue, 22 Jul 2025 13:13:42 +0530 Subject: [PATCH 02/10] feat: add `math/base/special/sinpif` --- type: pre_commit_static_analysis_report description: Results of running static analysis checks when committing changes. report: - task: lint_filenames status: passed - task: lint_editorconfig status: passed - task: lint_markdown status: passed - task: lint_package_json status: passed - task: lint_repl_help status: passed - task: lint_javascript_src status: passed - task: lint_javascript_cli status: na - task: lint_javascript_examples status: passed - task: lint_javascript_tests status: passed - task: lint_javascript_benchmarks status: passed - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: passed - task: lint_c_examples status: passed - task: lint_c_benchmarks status: passed - task: lint_c_tests_fixtures status: na - task: lint_shell status: na - task: lint_typescript_declarations status: passed - task: lint_typescript_tests status: passed - task: lint_license_headers status: passed --- --- .../math/base/special/sinpif/README.md | 62 +++--- .../special/sinpif/benchmark/benchmark.js | 16 +- .../sinpif/benchmark/benchmark.native.js | 18 +- .../sinpif/benchmark/c/native/Makefile | 2 +- .../sinpif/benchmark/c/native/benchmark.c | 26 +-- .../sinpif/benchmark/cpp/boost/Makefile | 110 ----------- .../sinpif/benchmark/cpp/boost/benchmark.cpp | 132 ------------- .../special/sinpif/benchmark/julia/REQUIRE | 2 - .../sinpif/benchmark/julia/benchmark.jl | 144 -------------- .../special/sinpif/benchmark/r/DESCRIPTION | 9 - .../special/sinpif/benchmark/r/benchmark.R | 109 ---------- .../math/base/special/sinpif/binding.gyp | 2 +- .../math/base/special/sinpif/docs/repl.txt | 2 +- .../base/special/sinpif/docs/types/index.d.ts | 16 +- .../base/special/sinpif/docs/types/test.ts | 24 +-- .../base/special/sinpif/examples/c/Makefile | 2 +- .../base/special/sinpif/examples/c/example.c | 12 +- .../base/special/sinpif/examples/index.js | 8 +- .../math/base/special/sinpif/include.gypi | 2 +- .../math/base/special/{sinpi.h => sinpif.h} | 12 +- .../math/base/special/sinpif/lib/index.js | 16 +- .../math/base/special/sinpif/lib/main.js | 187 +++++++++++++----- .../math/base/special/sinpif/lib/native.js | 16 +- .../math/base/special/sinpif/manifest.json | 57 +++--- .../math/base/special/sinpif/package.json | 87 +++++++- .../math/base/special/sinpif/src/Makefile | 2 +- .../math/base/special/sinpif/src/addon.c | 6 +- .../math/base/special/sinpif/src/main.c | 174 +++++++++++----- .../sinpif/test/fixtures/julia/decimals.json | 2 +- .../sinpif/test/fixtures/julia/runner.jl | 10 +- .../math/base/special/sinpif/test/test.js | 63 +++--- .../base/special/sinpif/test/test.native.js | 65 +++--- 32 files changed, 570 insertions(+), 825 deletions(-) delete mode 100644 lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/cpp/boost/Makefile delete mode 100644 lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/cpp/boost/benchmark.cpp delete mode 100644 lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/julia/REQUIRE delete mode 100755 lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/julia/benchmark.jl delete mode 100644 lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/r/DESCRIPTION delete mode 100755 lib/node_modules/@stdlib/math/base/special/sinpif/benchmark/r/benchmark.R rename lib/node_modules/@stdlib/math/base/special/sinpif/include/stdlib/math/base/special/{sinpi.h => sinpif.h} (73%) mode change 100644 => 100755 lib/node_modules/@stdlib/math/base/special/sinpif/test/fixtures/julia/runner.jl diff --git a/lib/node_modules/@stdlib/math/base/special/sinpif/README.md b/lib/node_modules/@stdlib/math/base/special/sinpif/README.md index b94fa78f78ce..2621ef1a6635 100644 --- a/lib/node_modules/@stdlib/math/base/special/sinpif/README.md +++ b/lib/node_modules/@stdlib/math/base/special/sinpif/README.md @@ -2,7 +2,7 @@ @license Apache-2.0 -Copyright (c) 2018 The Stdlib Authors. +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. @@ -18,33 +18,33 @@ limitations under the License. --> -# sinpi +# sinpif -> Compute the [sine][@stdlib/math/base/special/sin] of a number times [π][@stdlib/constants/float64/pi]. +> Compute the [sine][@stdlib/math/base/special/sinf] of a number times [π][@stdlib/constants/float32/pi].
## Usage ```javascript -var sinpi = require( '@stdlib/math/base/special/sinpi' ); +var sinpif = require( '@stdlib/math/base/special/sinpif' ); ``` -#### sinpi( x ) +#### sinpif( x ) -Computes `sin(πx)` more accurately than `sin(pi*x)`, especially for large `x`. +Computes `sin(πx)` in single-precision floating-point format more accurately than `sin(pi*x)`, especially for large `x`. ```javascript -var y = sinpi( 0.0 ); +var y = sinpif( 0.0 ); // returns 0.0 -y = sinpi( 0.5 ); +y = sinpif( 0.5 ); // returns 1.0 -y = sinpi( 0.9 ); +y = sinpif( 0.9 ); // returns ~0.309 -y = sinpi( NaN ); +y = sinpif( NaN ); // returns NaN ``` @@ -61,14 +61,14 @@ y = sinpi( NaN ); ```javascript var uniform = require( '@stdlib/random/array/uniform' ); var logEachMap = require( '@stdlib/console/log-each-map' ); -var sinpi = require( '@stdlib/math/base/special/sinpi' ); +var sinpif = require( '@stdlib/math/base/special/sinpif' ); var opts = { - 'dtype': 'float64' + 'dtype': 'float32' }; var x = uniform( 100, -100.0, 100.0, opts ); -logEachMap( 'sin( π * %0.4f ) = %0.4f', x, sinpi ); +logEachMap( 'sin( π * %0.4f ) = %0.4f', x, sinpif ); ```
@@ -98,24 +98,24 @@ logEachMap( 'sin( π * %0.4f ) = %0.4f', x, sinpi ); ### Usage ```c -#include "stdlib/math/base/special/sinpi.h" +#include "stdlib/math/base/special/sinpif.h" ``` -#### stdlib_base_sinpi( x ) +#### stdlib_base_sinpif( x ) -Computes `sin(πx)` more accurately than `sin(pi*x)`, especially for large `x`. +Computes `sin(πx)` in single-precision floating-point format more accurately than `sin(pi*x)`, especially for large `x`. ```c -double y = stdlib_base_sinpi( 0.5 ); -// returns 1.0 +float y = stdlib_base_sinpif( 0.5f ); +// returns 1.0f ``` The function accepts the following arguments: -- **x**: `[in] double` input value. +- **x**: `[in] float` input value. ```c -double stdlib_base_sinpi( const double x ); +float stdlib_base_sinpif( const float x ); ``` @@ -137,17 +137,17 @@ double stdlib_base_sinpi( const double x ); ### Examples ```c -#include "stdlib/math/base/special/sinpi.h" +#include "stdlib/math/base/special/sinpif.h" #include int main( void ) { - const double x[] = { 0.0, 0.523, 0.785, 1.047, 3.14 }; + const float x[] = { 0.0f, 0.523f, 0.785f, 1.047f, 3.14f }; - double y; + float y; int i; for ( i = 0; i < 5; i++ ) { - y = stdlib_base_sinpi( x[ i ] ); - printf( "sinpi(%lf) = %lf\n", x[ i ], y ); + y = stdlib_base_sinpif( x[ i ] ); + printf( "sin( π * %f ) = %f\n", x[ i ], y ); } } ``` @@ -164,12 +164,6 @@ int main( void ) { @@ -178,11 +172,11 @@ int main( void ) {