From 047254ca3dbd2454825e2acba54801df30b62311 Mon Sep 17 00:00:00 2001 From: ivishal-g Date: Wed, 11 Feb 2026 16:55:20 +0530 Subject: [PATCH 01/10] feat: add math/base/special/sincospif --- 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: missing_dependencies - task: lint_r status: na - task: lint_c_src status: missing_dependencies - task: lint_c_examples status: missing_dependencies - task: lint_c_benchmarks status: missing_dependencies - 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/sincospif/README.md | 223 ++++++++++++++++++ .../special/sincospif/benchmark/benchmark.js | 177 ++++++++++++++ .../sincospif/benchmark/benchmark.native.js | 64 +++++ .../special/sincospif/benchmark/c/Makefile | 127 ++++++++++ .../special/sincospif/benchmark/c/benchmark.c | 135 +++++++++++ .../sincospif/benchmark/c/native/Makefile | 146 ++++++++++++ .../sincospif/benchmark/c/native/benchmark.c | 135 +++++++++++ .../special/sincospif/benchmark/julia/REQUIRE | 2 + .../sincospif/benchmark/julia/benchmark.jl | 163 +++++++++++++ .../sincospif/benchmark/python/benchmark.py | 105 +++++++++ .../math/base/special/sincospif/binding.gyp | 170 +++++++++++++ .../math/base/special/sincospif/docs/repl.txt | 61 +++++ .../special/sincospif/docs/types/index.d.ts | 106 +++++++++ .../base/special/sincospif/docs/types/test.ts | 113 +++++++++ .../special/sincospif/examples/c/Makefile | 146 ++++++++++++ .../special/sincospif/examples/c/example.c | 32 +++ .../base/special/sincospif/examples/index.js | 31 +++ .../math/base/special/sincospif/include.gypi | 53 +++++ .../stdlib/math/base/special/sincospif.h | 38 +++ .../math/base/special/sincospif/lib/assign.js | 115 +++++++++ .../math/base/special/sincospif/lib/index.js | 67 ++++++ .../math/base/special/sincospif/lib/main.js | 58 +++++ .../math/base/special/sincospif/lib/native.js | 61 +++++ .../math/base/special/sincospif/manifest.json | 96 ++++++++ .../math/base/special/sincospif/package.json | 73 ++++++ .../math/base/special/sincospif/src/Makefile | 70 ++++++ .../math/base/special/sincospif/src/addon.c | 41 ++++ .../math/base/special/sincospif/src/main.c | 98 ++++++++ .../sincospif/test/fixtures/julia/REQUIRE | 2 + .../test/fixtures/julia/decimals.json | 1 + .../test/fixtures/julia/integers.json | 1 + .../sincospif/test/fixtures/julia/runner.jl | 72 ++++++ .../special/sincospif/test/test.assign.js | 218 +++++++++++++++++ .../math/base/special/sincospif/test/test.js | 40 ++++ .../base/special/sincospif/test/test.main.js | 142 +++++++++++ .../special/sincospif/test/test.native.js | 157 ++++++++++++ 36 files changed, 3339 insertions(+) create mode 100644 lib/node_modules/@stdlib/math/base/special/sincospif/README.md create mode 100644 lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/benchmark.native.js create mode 100644 lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/c/Makefile create mode 100644 lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/c/benchmark.c create mode 100644 lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/c/native/Makefile create mode 100644 lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/c/native/benchmark.c create mode 100644 lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/julia/REQUIRE create mode 100755 lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/julia/benchmark.jl create mode 100644 lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/python/benchmark.py create mode 100644 lib/node_modules/@stdlib/math/base/special/sincospif/binding.gyp create mode 100644 lib/node_modules/@stdlib/math/base/special/sincospif/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/math/base/special/sincospif/docs/types/index.d.ts create mode 100644 lib/node_modules/@stdlib/math/base/special/sincospif/docs/types/test.ts create mode 100644 lib/node_modules/@stdlib/math/base/special/sincospif/examples/c/Makefile create mode 100644 lib/node_modules/@stdlib/math/base/special/sincospif/examples/c/example.c create mode 100644 lib/node_modules/@stdlib/math/base/special/sincospif/examples/index.js create mode 100644 lib/node_modules/@stdlib/math/base/special/sincospif/include.gypi create mode 100644 lib/node_modules/@stdlib/math/base/special/sincospif/include/stdlib/math/base/special/sincospif.h create mode 100644 lib/node_modules/@stdlib/math/base/special/sincospif/lib/assign.js create mode 100644 lib/node_modules/@stdlib/math/base/special/sincospif/lib/index.js create mode 100644 lib/node_modules/@stdlib/math/base/special/sincospif/lib/main.js create mode 100644 lib/node_modules/@stdlib/math/base/special/sincospif/lib/native.js create mode 100644 lib/node_modules/@stdlib/math/base/special/sincospif/manifest.json create mode 100644 lib/node_modules/@stdlib/math/base/special/sincospif/package.json create mode 100644 lib/node_modules/@stdlib/math/base/special/sincospif/src/Makefile create mode 100644 lib/node_modules/@stdlib/math/base/special/sincospif/src/addon.c create mode 100644 lib/node_modules/@stdlib/math/base/special/sincospif/src/main.c create mode 100644 lib/node_modules/@stdlib/math/base/special/sincospif/test/fixtures/julia/REQUIRE create mode 100644 lib/node_modules/@stdlib/math/base/special/sincospif/test/fixtures/julia/decimals.json create mode 100644 lib/node_modules/@stdlib/math/base/special/sincospif/test/fixtures/julia/integers.json create mode 100755 lib/node_modules/@stdlib/math/base/special/sincospif/test/fixtures/julia/runner.jl create mode 100644 lib/node_modules/@stdlib/math/base/special/sincospif/test/test.assign.js create mode 100644 lib/node_modules/@stdlib/math/base/special/sincospif/test/test.js create mode 100644 lib/node_modules/@stdlib/math/base/special/sincospif/test/test.main.js create mode 100644 lib/node_modules/@stdlib/math/base/special/sincospif/test/test.native.js diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/README.md b/lib/node_modules/@stdlib/math/base/special/sincospif/README.md new file mode 100644 index 000000000000..6aa0918d0ed8 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/README.md @@ -0,0 +1,223 @@ + + +# sincospif + +> Simultaneously compute the [sinef][@stdlib/math/base/special/sinf] and [cosinef][@stdlib/math/base/special/cosf] of a single-precision floating-point number times [π][@stdlib/constants/float32/pi]. + +
+ +## Usage + +```javascript +var sincospif = require( '@stdlib/math/base/special/sincospif' ); +``` + +#### sincospif( x ) + +Simultaneously computes the [sinef][@stdlib/math/base/special/sinf] and [cosinef][@stdlib/math/base/special/cosf] of a single-precision floating-point number times [π][@stdlib/constants/float32/pi] more accurately than `sincos(pi*x)` when operating on single-precision floating-point values, especially for large `x`. + +```javascript +var v = sincospif( 0.0 ); +// returns [ 0.0, 1.0 ] + +v = sincospif( 0.5 ); +// returns [ 1.0, 0.0 ] + +v = sincospif( 0.1 ); +// returns [ ~0.309, ~0.951 ] + +v = sincospif( NaN ); +// returns [ NaN, NaN ] +``` + +#### sincospif( x, out, stride, offset ) + +Simultaneously computes the [sinef][@stdlib/math/base/special/sinf] and [cosinef][@stdlib/math/base/special/cosf] of a single-precision floating-point number times [π][@stdlib/constants/float32/pi] more accurately than `sincos(pi*x)`, especially for large `x`, and assigns results to a provided output array. + + + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +var out = new Float32Array( 2 ); + +var v = sincospif.assign( 0.0, out, 1, 0 ); +// returns [ 0.0, 1.0 ] + +var bool = ( v === out ); +// returns true +``` + +
+ + + +
+ +## Examples + + + +```javascript +var linspace = require( '@stdlib/array/base/linspace' ); +var sincospif = require( '@stdlib/math/base/special/sincospif' ); + +var x = linspace( 0.0, 2.0, 101 ); + +var i; +for ( i = 0; i < x.length; i++ ) { + console.log( sincospif( x[ i ] ) ); +} +``` + +
+ + + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/math/base/special/sincospif.h" +``` + +#### stdlib_base_sincospif( x, &sine, &cosine ) + +Simultaneously computes the [sinef][@stdlib/math/base/special/sinf] and [cosinef][@stdlib/math/base/special/cosf] of a single-precision floating-point number times [π][@stdlib/constants/float32/pi] more accurately than `sincos(pi*x)`, especially for large `x`. + +```c +float cosine; +float sine; + +stdlib_base_sincospif( 4.0, &sine, &cosine ); +``` + +The function accepts the following arguments: + +- **x**: `[in] float` input value. +- **sine**: `[out] float*` destination for the sine. +- **cosine**: `[out] float*` destination for the cosine. + +```c +void stdlib_base_sincospif( const float x, float *sine, float *cosine ); +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/math/base/special/sincospif.h" +#include + +int main( void ) { + const float x[] = { 0.0f, 0.5f, 1.0f, 2.0f }; + + float cosine; + float sine; + int i; + for ( i = 0; i < 4; i++ ) { + stdlib_base_sincospif( x[ i ], &sine, &cosine ); + printf( "x: %f => sine: %f, cosine: %f\n", x[ i ], sine, cosine ); + } +} +``` + +
+ + + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/benchmark.js b/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/benchmark.js new file mode 100644 index 000000000000..71c5e4734d2d --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/benchmark.js @@ -0,0 +1,177 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var sinpif = require( '@stdlib/math/base/special/sinpif' ); +var cospif = require( '@stdlib/math/base/special/cospif' ); +var PIF = require( '@stdlib/constants/float32/pi' ); +var format = require( '@stdlib/string/format' ); +var Float32Array = require( '@stdlib/array/float32' ); +var pkg = require( './../package.json' ).name; +var sincospif = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var x; + var y; + var i; + + x = uniform( 100, -10.0, 10.0 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = sincospif( x[ i % x.length ] ); + if ( isnanf( y[ 0 ] ) || isnanf( y[ 1 ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( y[ 0 ] ) || isnanf( y[ 1 ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( format( '%s::separate-evaluation', pkg ), function benchmark( b ) { + var x; + var y; + var i; + + x = uniform( 100, -10.0, 10.0 ); + y = new Float32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y[ 0 ] = sinpif( x[ i % x.length ] ); + y[ 1 ] = cospif( x[ i % x.length ] ); + if ( isnanf( y[ 0 ] ) || isnanf( y[ 1 ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( y[ 0 ] ) || isnanf( y[ 1 ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( format( '%s:assign', pkg ), function benchmark( b ) { + var x; + var y; + var i; + + x = uniform( 100, -10.0, 10.0 ); + y = new Float32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + sincospif.assign( x[ i % x.length ], y, 1, 0 ); + if ( isnanf( y[ 0 ] ) || isnanf( y[ 1 ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( y[ 0 ] ) || isnanf( y[ 1 ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( format( '%s::separate-evaluation,in-place', pkg ), function benchmark( b ) { + var x; + var y; + var i; + + x = uniform( 100, -10.0, 10.0, { + 'dtype': 'float32' + }); + y = new Float32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y[ 0 ] = sinpif( x[ i%x.length ] ); + y[ 1 ] = cospif( x[ i%x.length ] ); + if ( isnanf( y[ 0 ] ) || isnanf( y[ 1 ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( y[ 0 ] ) || isnanf( y[ 1 ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( format( '%s::built-in', pkg ), function benchmark( b ) { + var x; + var y; + var i; + + x = uniform( 100, -10.0, 10.0 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = [ + Math.sin( PIF * x[ i % x.length ] ) ]; // eslint-disable-line stdlib/no-builtin-math + if ( isnanf( y[ 0 ] ) || isnanf( y[ 1 ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( y[ 0 ] ) || isnanf( y[ 1 ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( format( '%s::built-in,in-place', pkg ), function benchmark( b ) { + var x; + var y; + var i; + + x = uniform( 100, -10.0, 10.0 ); + y = new Float32Array( 2 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y[ 0 ] = Math.sin( PIF * x[ i % x.length ] ); // eslint-disable-line stdlib/no-builtin-math + y[ 1 ] = Math.cos( PIF * x[ i % x.length ] ); // eslint-disable-line stdlib/no-builtin-math + if ( isnanf( y[ 0 ] ) || isnanf( y[ 1 ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( y[ 0 ] ) || isnanf( y[ 1 ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/benchmark.native.js new file mode 100644 index 000000000000..189e4ed7dd3f --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/benchmark.native.js @@ -0,0 +1,64 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var sincospif = tryRequire( resolve( __dirname, './../lib/native.js' ) ); +var opts = { + 'skip': ( sincospif instanceof Error ) +}; + + +// MAIN // + +bench( format( '%s::native', pkg ), opts, function benchmark( b ) { + var x; + var y; + var i; + + x = uniform( 100, -10.0, 10.0, { + 'dtype': 'float32' + }); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = sincospif( x[ i%x.length ] ); + if ( isnanf( y[ 0 ] ) || isnanf( y[ 1 ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( y[ 0 ] ) || isnanf( y[ 1 ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/c/Makefile b/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/c/Makefile new file mode 100644 index 000000000000..928de45a1a06 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/c/Makefile @@ -0,0 +1,127 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of C targets: +c_targets := benchmark.out + + +# RULES # + +#/ +# Compiles C source files. +# +# @param {string} [C_COMPILER] - C compiler +# @param {string} [CFLAGS] - C compiler flags +# @param {(string|void)} [fPIC] - compiler flag indicating whether to generate position independent code +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler +# @param {string} CFLAGS - C compiler flags +# @param {(string|void)} fPIC - compiler flag indicating whether to generate position independent code +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) $(fPIC) -o $@ $< -lm + +#/ +# 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/sincospif/benchmark/c/benchmark.c b/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/c/benchmark.c new file mode 100644 index 000000000000..d85f798a1fe8 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/c/benchmark.c @@ -0,0 +1,135 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/math/base/special/sincospif.h" +#include +#include +#include +#include + +#define NAME "sincospif" +#define ITERATIONS 1000000 +#define REPEATS 3 + +/** +* Prints the TAP version. +*/ +static void print_version( void ) { + printf( "TAP version 13\n" ); +} + +/** +* Prints the TAP summary. +* +* @param total total number of tests +* @param passing total number of passing tests +*/ +static void print_summary( int total, int passing ) { + printf( "#\n" ); + printf( "1..%d\n", total ); // TAP plan + printf( "# total %d\n", total ); + printf( "# pass %d\n", passing ); + printf( "#\n" ); + printf( "# ok\n" ); +} + +/** +* Prints benchmarks results. +* +* @param elapsed elapsed time in seconds +*/ +static void print_results( double elapsed ) { + double rate = (double)ITERATIONS / elapsed; + printf( " ---\n" ); + printf( " iterations: %d\n", ITERATIONS ); + printf( " elapsed: %0.9f\n", elapsed ); + printf( " rate: %0.9f\n", rate ); + printf( " ...\n" ); +} + +/** +* Returns a clock time. +* +* @return clock time +*/ +static double tic( void ) { + struct timeval now; + gettimeofday( &now, NULL ); + return (double)now.tv_sec + (double)now.tv_usec/1.0e6; +} + +/** +* Generates a random number on the interval [0,1). +* +* @return random number +*/ +static float rand_float( void ) { + return (float)( ( 20.0 * rand() ) / ( (double)RAND_MAX + 1.0 ) - 10.0 ); +} + +/** +* Runs a benchmark. +* +* @return elapsed time in seconds +*/ +static double benchmark( void ) { + float x[ 100 ]; + double elapsed; + float sine; + float cosine; + double t; + int i; + + for ( i = 0; i < 100; i++ ) { + x[ i ] = rand_float(); + } + + t = tic(); + for ( i = 0; i < ITERATIONS; i++ ) { + stdlib_base_sincospif( x[ i%100 ], &sine, &cosine ); + if ( sine != sine || cosine != cosine ) { + printf( "should not return NaN\n" ); + break; + } + } + elapsed = tic() - t; + if ( sine != sine || cosine != cosine ) { + printf( "should not return NaN\n" ); + } + return elapsed; +} + +/** +* Main execution sequence. +*/ +int main( void ) { + double elapsed; + int i; + + // Use the current time to seed the random number generator: + srand( time( NULL ) ); + + print_version(); + for ( i = 0; i < REPEATS; i++ ) { + printf( "# c::%s\n", NAME ); + elapsed = benchmark(); + print_results( elapsed ); + printf( "ok %d benchmark finished\n", i+1 ); + } + print_summary( REPEATS, REPEATS ); +} diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/c/native/Makefile b/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/c/native/Makefile new file mode 100644 index 000000000000..979768abbcec --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/c/native/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := benchmark.out + + +# RULES # + +#/ +# Compiles source files. +# +# @param {string} [C_COMPILER] - C compiler (e.g., `gcc`) +# @param {string} [CFLAGS] - C compiler options +# @param {(string|void)} [fPIC] - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} [INCLUDE] - list of includes (e.g., `-I /foo/bar -I /beep/boop/include`) +# @param {string} [SOURCE_FILES] - list of source files +# @param {string} [LIBPATH] - list of library paths (e.g., `-L /foo/bar -L /beep/boop`) +# @param {string} [LIBRARIES] - list of libraries (e.g., `-lopenblas -lpthread`) +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler (e.g., `gcc`) +# @param {string} CFLAGS - C compiler options +# @param {(string|void)} fPIC - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} INCLUDE - list of includes (e.g., `-I /foo/bar`) +# @param {string} SOURCE_FILES - list of source files +# @param {string} LIBPATH - list of library paths (e.g., `-L /foo/bar`) +# @param {string} LIBRARIES - list of libraries (e.g., `-lopenblas`) +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) $(fPIC) $(INCLUDE) -o $@ $(SOURCE_FILES) $< $(LIBPATH) -lm $(LIBRARIES) + +#/ +# Runs compiled benchmarks. +# +# @example +# make run +#/ +run: $(c_targets) + $(QUIET) ./$< + +.PHONY: run + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/c/native/benchmark.c b/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/c/native/benchmark.c new file mode 100644 index 000000000000..e30a538b799c --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/c/native/benchmark.c @@ -0,0 +1,135 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/math/base/special/sincospif.h" +#include +#include +#include +#include +#include + +#define NAME "sincospif" +#define ITERATIONS 1000000 +#define REPEATS 3 + +/** +* Prints the TAP version. +*/ +static void print_version( void ) { + printf( "TAP version 13\n" ); +} + +/** +* Prints the TAP summary. +* +* @param total total number of tests +* @param passing total number of passing tests +*/ +static void print_summary( int total, int passing ) { + printf( "#\n" ); + printf( "1..%d\n", total ); + printf( "# total %d\n", total ); + printf( "# pass %d\n", passing ); + printf( "#\n" ); + printf( "# ok\n" ); +} + +/** +* Prints benchmark results. +* +* @param elapsed elapsed time in seconds +*/ +static void print_results( double elapsed ) { + double rate = (double)ITERATIONS / elapsed; + printf( " ---\n" ); + printf( " iterations: %d\n", ITERATIONS ); + printf( " elapsed: %0.9f\n", elapsed ); + printf( " rate: %0.9f\n", rate ); + printf( " ...\n" ); +} + +/** +* Returns a clock time. +* +* @return clock time +*/ +static double tic( void ) { + struct timeval now; + gettimeofday( &now, NULL ); + return (double)now.tv_sec + (double)now.tv_usec / 1.0e6; +} + +/** +* Generates a random number on the interval [0,1). +* +* @return random number +*/ +static float rand_float( void ) { + return (float)( ( 20.0 * rand() ) / ( (double)RAND_MAX + 1.0 ) - 10.0 ); +} + +/** +* Runs a benchmark. +* +* @return elapsed time in seconds +*/ +static double benchmark( void ) { + float x[ 100 ]; + float sine; + float cosine; + double elapsed; + double t; + int i; + + for ( i = 0; i < 100; i++ ) { + x[ i ] = rand_float(); + } + + t = tic(); + for ( i = 0; i < ITERATIONS; i++ ) { + stdlib_base_sincospif( x[ i%100 ], &sine, &cosine ); + if ( isnanf( sine ) || isnanf( cosine ) ) { + printf( "unexpected results\n" ); + break; + } + } + elapsed = tic() - t; + if ( isnanf( sine ) || isnanf( cosine ) ) { + printf( "unexpected results\n" ); + } + return elapsed; +} + +/** +* Main execution sequence. +*/ +int main( void ) { + double elapsed; + int i; + + srand( time( NULL ) ); + + print_version(); + for ( i = 0; i < REPEATS; i++ ) { + printf( "# c::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/sincospif/benchmark/julia/REQUIRE b/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/julia/REQUIRE new file mode 100644 index 000000000000..98645e192e41 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/julia/REQUIRE @@ -0,0 +1,2 @@ +julia 1.5 +BenchmarkTools 0.5.0 diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/julia/benchmark.jl b/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/julia/benchmark.jl new file mode 100755 index 000000000000..58c36cf58ba3 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/julia/benchmark.jl @@ -0,0 +1,163 @@ +#!/usr/bin/env julia +# +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import BenchmarkTools +using Printf + +# Benchmark variables: +name = "sincospif"; +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 + +""" + sincospif( x ) + +Compute the sine and cosine of a number (since sincospif is not directly exposed in julia). + +# Arguments + +* `x`: input value + +# Examples + +``` julia +julia> sincospif( 0.0 ) +``` +""" +function sincospif( x ) + Float32[ sinpi( Float64(x) ), cospi( Float64(x) ) ]; +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 $sincospif( Float32( (20.0*rand()) - 10.0 ) ) 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/sincospif/benchmark/python/benchmark.py b/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/python/benchmark.py new file mode 100644 index 000000000000..af06f07e142a --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/python/benchmark.py @@ -0,0 +1,105 @@ +#!/usr/bin/env python +# +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Benchmark sincospif.""" + +from __future__ import print_function +import timeit + +NAME = "sincospif" +REPEATS = 3 +ITERATIONS = 1000000 + + +def print_version(): + """Print the TAP version.""" + print("TAP version 13") + + +def print_summary(total, passing): + """Print the benchmark summary. + + # Arguments + + * `total`: total number of tests + * `passing`: number of passing tests + + """ + print("#") + print("1.." + str(total)) # TAP plan + print("# total " + str(total)) + print("# pass " + str(passing)) + print("#") + print("# ok") + + +def print_results(elapsed): + """Print benchmark results. + + # Arguments + + * `elapsed`: elapsed time (in seconds) + + # Examples + + ``` python + python> print_results(0.131009101868) + ``` + """ + rate = ITERATIONS / elapsed + + print(" ---") + print(" iterations: " + str(ITERATIONS)) + print(" elapsed: " + str(elapsed)) + print(" rate: " + str(rate)) + print(" ...") + + +def benchmark(): + """Run the benchmark and print benchmark results.""" + setup = ( + "import numpy as np;" + "from math import pi;" + "from random import random;" + ) + stmt = ( + "x = np.float32(20.0*random() - 10.0);" + "y = np.float32(np.sin(np.float64(pi) * np.float64(x)));" + "z = np.float32(np.cos(np.float64(pi) * np.float64(x)))" + ) + + t = timeit.Timer(stmt, setup=setup) + + print_version() + + for i in range(REPEATS): + print("# python::" + NAME) + elapsed = t.timeit(number=ITERATIONS) + print_results(elapsed) + print("ok " + str(i+1) + " benchmark finished") + + print_summary(REPEATS, REPEATS) + + +def main(): + """Run the benchmark.""" + benchmark() + + +if __name__ == "__main__": + main() diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/binding.gyp b/lib/node_modules/@stdlib/math/base/special/sincospif/binding.gyp new file mode 100644 index 000000000000..0d6508a12e99 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/binding.gyp @@ -0,0 +1,170 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A `.gyp` file for building a Node.js native add-on. +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # List of files to include in this file: + 'includes': [ + './include.gypi', + ], + + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Target name should match the add-on export name: + 'addon_target_name%': 'addon', + + # Set variables based on the host OS: + 'conditions': [ + [ + 'OS=="win"', + { + # Define the object file suffix: + 'obj': 'obj', + }, + { + # Define the object file suffix: + 'obj': 'o', + } + ], # end condition (OS=="win") + ], # end conditions + }, # end variables + + # Define compile targets: + 'targets': [ + + # Target to generate an add-on: + { + # The target name should match the add-on export name: + 'target_name': '<(addon_target_name)', + + # Define dependencies: + 'dependencies': [], + + # Define directories which contain relevant include headers: + 'include_dirs': [ + # Local include directory: + '<@(include_dirs)', + ], + + # List of source files: + 'sources': [ + '<@(src_files)', + ], + + # Settings which should be applied when a target's object files are used as linker input: + 'link_settings': { + # Define libraries: + 'libraries': [ + '<@(libraries)', + ], + + # Define library directories: + 'library_dirs': [ + '<@(library_dirs)', + ], + }, + + # C/C++ compiler flags: + 'cflags': [ + # Enable commonly used warning options: + '-Wall', + + # Aggressive optimization: + '-O3', + ], + + # C specific compiler flags: + 'cflags_c': [ + # Specify the C standard to which a program is expected to conform: + '-std=c99', + ], + + # C++ specific compiler flags: + 'cflags_cpp': [ + # Specify the C++ standard to which a program is expected to conform: + '-std=c++11', + ], + + # Linker flags: + 'ldflags': [], + + # Apply conditions based on the host OS: + 'conditions': [ + [ + 'OS=="mac"', + { + # Linker flags: + 'ldflags': [ + '-undefined dynamic_lookup', + '-Wl,-no-pie', + '-Wl,-search_paths_first', + ], + }, + ], # end condition (OS=="mac") + [ + 'OS!="win"', + { + # C/C++ flags: + 'cflags': [ + # Generate platform-independent code: + '-fPIC', + ], + }, + ], # end condition (OS!="win") + ], # end conditions + }, # end target <(addon_target_name) + + # Target to copy a generated add-on to a standard location: + { + 'target_name': 'copy_addon', + + # Declare that the output of this target is not linked: + 'type': 'none', + + # Define dependencies: + 'dependencies': [ + # Require that the add-on be generated before building this target: + '<(addon_target_name)', + ], + + # Define a list of actions: + 'actions': [ + { + 'action_name': 'copy_addon', + 'message': 'Copying addon...', + + # Explicitly list the inputs in the command-line invocation below: + 'inputs': [], + + # Declare the expected outputs: + 'outputs': [ + '<(addon_output_dir)/<(addon_target_name).node', + ], + + # Define the command-line invocation: + 'action': [ + 'cp', + '<(PRODUCT_DIR)/<(addon_target_name).node', + '<(addon_output_dir)/<(addon_target_name).node', + ], + }, + ], # end actions + }, # end target copy_addon + ], # end targets +} diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/docs/repl.txt b/lib/node_modules/@stdlib/math/base/special/sincospif/docs/repl.txt new file mode 100644 index 000000000000..de953061fcac --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/docs/repl.txt @@ -0,0 +1,61 @@ + +{{alias}}( x ) + Simultaneously computes the sine and cosine of a number times π + using single-precision floating-point arithmetic. + + Parameters + ---------- + x: number + Input value. + + Returns + ------- + y: Array + Two-element array containing sin(πx) and cos(πx). + + Examples + -------- + > var y = {{alias}}( 0.0 ) + [ 0.0, 1.0 ] + > y = {{alias}}( 0.5 ) + [ 1.0, 0.0 ] + > y = {{alias}}( 0.1 ) + [ ~0.309, ~0.951 ] + > y = {{alias}}( NaN ) + [ NaN, NaN ] + + +{{alias}}.assign( x, out, stride, offset ) + Simultaneously computes the sine and cosine of a number times π + using single-precision floating-point arithmetic and assigns results + to a provided output array. + + Parameters + ---------- + x: number + Input value. + + out: Array|TypedArray|Object + Output array. + + stride: integer + Output array stride. + + offset: integer + Output array index offset. + + Returns + ------- + y: TypedArray + Two-element array containing sin(πx) and cos(πx). + + Examples + -------- + > var out = new {{alias:@stdlib/array/float32}}( 2 ); + > var v = {{alias}}.assign( 0.0, out, 1, 0 ) + [ 0.0, 1.0 ] + > var bool = ( v === out ) + true + + See Also + -------- diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/docs/types/index.d.ts b/lib/node_modules/@stdlib/math/base/special/sincospif/docs/types/index.d.ts new file mode 100644 index 000000000000..529ee7888dd9 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/docs/types/index.d.ts @@ -0,0 +1,106 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + + +/** +* Interface describing `sincospif`. +*/ +interface SinCosPif { + /** + * Simultaneously computes the sine and cosine of a number times π using + * single-precision floating-point arithmetic. + * + * @param x - input value + * @returns two-element array containing sin(πx) and cos(πx) + * + * @example + * var v = sincospif( 0.0 ); + * // returns [ 0.0, 1.0 ] + * + * @example + * var v = sincospif( 0.5 ); + * // returns [ 1.0, 0.0 ] + * + * @example + * var v = sincospif( 0.1 ); + * // returns [ ~0.309, ~0.951 ] + * + * @example + * var v = sincospif( NaN ); + * // returns [ NaN, NaN ] + */ + ( x: number ): Array; + + /** + * Simultaneously computes the sine and cosine of a number times π using + * single-precision floating-point arithmetic and assigns results to a + * provided output array. + * + * @param x - input value + * @param out - output array + * @param stride - output array stride + * @param offset - output array index offset + * @returns two-element array containing sin(πx) and cos(πx) + * + * @example + * var Float32Array = require( '@stdlib/array/float32' ); + * + * var out = new Float32Array( 2 ); + * + * var v = sincospif.assign( 0.0, out, 1, 0 ); + * // returns [ 0.0, 1.0 ] + * + * var bool = ( v === out ); + * // returns true + */ + assign>( x: number, out: T, stride: number, offset: number ): T; +} + +/** +* Simultaneously computes the sine and cosine of a number times π using +* single-precision floating-point arithmetic. +* +* @param x - input value +* @returns two-element array containing sin(πx) and cos(πx) +* +* @example +* var v = sincospif( 0.0 ); +* // returns [ 0.0, 1.0 ] +* +* @example +* var v = sincospif( 0.5 ); +* // returns [ 1.0, 0.0 ] +* +* @example +* var v = sincospif( 0.1 ); +* // returns [ ~0.309, ~0.951 ] +* +* @example +* var v = sincospif( NaN ); +* // returns [ NaN, NaN ] +*/ +declare var sincospif: SinCosPif; + + +// EXPORTS // + +export = sincospif; diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/docs/types/test.ts b/lib/node_modules/@stdlib/math/base/special/sincospif/docs/types/test.ts new file mode 100644 index 000000000000..9bd91e25be2b --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/docs/types/test.ts @@ -0,0 +1,113 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/// + +import sincospif = require( './index' ); + + +// TESTS // + +// The function returns a numeric array... +{ + sincospif( 1.0 ); // $ExpectType number[] +} + +// The compiler throws an error if the function is provided an argument other than a number... +{ + sincospif( true ); // $ExpectError + sincospif( false ); // $ExpectError + sincospif( null ); // $ExpectError + sincospif( undefined ); // $ExpectError + sincospif( '5' ); // $ExpectError + sincospif( [] ); // $ExpectError + sincospif( {} ); // $ExpectError + sincospif( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + sincospif(); // $ExpectError + sincospif( 1.0, 1.0 ); // $ExpectError +} + +// Attached to the main export is an `assign` method which returns an array-like object containing numbers... +{ + const out = [ 0.0, 0.0 ]; + + sincospif.assign( 3.14e-319, out, 1, 0 ); // $ExpectType number[] +} + +// The compiler throws an error if the `assign` method is provided a first argument which is not a number... +{ + const out = [ 0.0, 0.0 ]; + + sincospif.assign( true, out, 1, 0 ); // $ExpectError + sincospif.assign( false, out, 1, 0 ); // $ExpectError + sincospif.assign( '5', out, 1, 0 ); // $ExpectError + sincospif.assign( null, out, 1, 0 ); // $ExpectError + sincospif.assign( [], out, 1, 0 ); // $ExpectError + sincospif.assign( {}, out, 1, 0 ); // $ExpectError + sincospif.assign( ( x: number ): number => x, out, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `assign` method is provided a second argument which is not an array-like object... +{ + sincospif.assign( 1.0, 1, 1, 0 ); // $ExpectError + sincospif.assign( 1.0, true, 1, 0 ); // $ExpectError + sincospif.assign( 1.0, false, 1, 0 ); // $ExpectError + sincospif.assign( 1.0, null, 1, 0 ); // $ExpectError + sincospif.assign( 1.0, {}, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `assign` method is provided a third argument which is not a number... +{ + const out = [ 0.0, 0.0 ]; + + sincospif.assign( 1.0, out, '5', 0 ); // $ExpectError + sincospif.assign( 1.0, out, true, 0 ); // $ExpectError + sincospif.assign( 1.0, out, false, 0 ); // $ExpectError + sincospif.assign( 1.0, out, null, 0 ); // $ExpectError + sincospif.assign( 1.0, out, [], 0 ); // $ExpectError + sincospif.assign( 1.0, out, {}, 0 ); // $ExpectError + sincospif.assign( 1.0, out, ( x: number ): number => x, 0 ); // $ExpectError +} + +// The compiler throws an error if the `assign` method is provided a fourth argument which is not a number... +{ + const out = [ 0.0, 0.0 ]; + + sincospif.assign( 1.0, out, 1, '5' ); // $ExpectError + sincospif.assign( 1.0, out, 1, true ); // $ExpectError + sincospif.assign( 1.0, out, 1, false ); // $ExpectError + sincospif.assign( 1.0, out, 1, null ); // $ExpectError + sincospif.assign( 1.0, out, 1, [] ); // $ExpectError + sincospif.assign( 1.0, out, 1, {} ); // $ExpectError + sincospif.assign( 1.0, out, 1, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the `assign` method is provided an unsupported number of arguments... +{ + const out = [ 0.0, 0.0 ]; + + sincospif.assign(); // $ExpectError + sincospif.assign( 1.0 ); // $ExpectError + sincospif.assign( 1.0, out ); // $ExpectError + sincospif.assign( 1.0, out, 1 ); // $ExpectError + sincospif.assign( 1.0, out, 1, 0, 1 ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/examples/c/Makefile b/lib/node_modules/@stdlib/math/base/special/sincospif/examples/c/Makefile new file mode 100644 index 000000000000..c8f8e9a1517b --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/examples/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := example.out + + +# RULES # + +#/ +# Compiles source files. +# +# @param {string} [C_COMPILER] - C compiler (e.g., `gcc`) +# @param {string} [CFLAGS] - C compiler options +# @param {(string|void)} [fPIC] - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} [INCLUDE] - list of includes (e.g., `-I /foo/bar -I /beep/boop/include`) +# @param {string} [SOURCE_FILES] - list of source files +# @param {string} [LIBPATH] - list of library paths (e.g., `-L /foo/bar -L /beep/boop`) +# @param {string} [LIBRARIES] - list of libraries (e.g., `-lopenblas -lpthread`) +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler (e.g., `gcc`) +# @param {string} CFLAGS - C compiler options +# @param {(string|void)} fPIC - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} INCLUDE - list of includes (e.g., `-I /foo/bar`) +# @param {string} SOURCE_FILES - list of source files +# @param {string} LIBPATH - list of library paths (e.g., `-L /foo/bar`) +# @param {string} LIBRARIES - list of libraries (e.g., `-lopenblas`) +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) $(fPIC) $(INCLUDE) -o $@ $(SOURCE_FILES) $< $(LIBPATH) -lm $(LIBRARIES) + +#/ +# Runs compiled examples. +# +# @example +# make run +#/ +run: $(c_targets) + $(QUIET) ./$< + +.PHONY: run + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/examples/c/example.c b/lib/node_modules/@stdlib/math/base/special/sincospif/examples/c/example.c new file mode 100644 index 000000000000..b058bd008596 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/examples/c/example.c @@ -0,0 +1,32 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/math/base/special/sincospif.h" +#include + +int main( void ) { + const float x[] = { 0.0f, 0.5f, 1.0f, 2.0f }; + + float cosine; + float sine; + int i; + for ( i = 0; i < 4; i++ ) { + stdlib_base_sincospif( x[ i ], &sine, &cosine ); + printf( "x: %f => sine: %f, cosine: %f\n", x[ i ], sine, cosine ); + } +} diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/examples/index.js b/lib/node_modules/@stdlib/math/base/special/sincospif/examples/index.js new file mode 100644 index 000000000000..68fef5dc3686 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/examples/index.js @@ -0,0 +1,31 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var linspace = require( '@stdlib/array/base/linspace' ); +var sincospif = require( './../lib' ); + +var x = linspace( 0.0, 2.0, 101 ); + +var y; +var i; +for ( i = 0; i < x.length; i++ ) { + y = sincospif( x[ i ] ); + console.log( 'sincospif(%d) = [ %d, %d ]', x[ i ], y[ 0 ], y[ 1 ] ); +} diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/include.gypi b/lib/node_modules/@stdlib/math/base/special/sincospif/include.gypi new file mode 100644 index 000000000000..bee8d41a2caf --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/include.gypi @@ -0,0 +1,53 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A GYP include file for building a Node.js native add-on. +# +# Main documentation: +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Source directory: + 'src_dir': './src', + + # Include directories: + 'include_dirs': [ + '[ 0.0, 1.0 ] +* +* v = sincospif( 0.5 ); +* // returns [ 1.0, 0.0 ] +* +* v = sincospif( 0.1 ); +* // returns [ ~0.309, ~0.951 ] +* +* v = sincospif( NaN ); +* // returns [ NaN, NaN ] +* +* @example +* var sincospif = require( '@stdlib/math/base/special/sincospif' ); +* +* var out = new Float32Array( 2 ); +* +* var v = sincospif.assign( 0.0, out, 1, 0 ); +* // returns [ 0.0, 1.0 ] +* +* var bool = ( v === out ); +* // returns true +*/ + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var main = require( './main.js' ); +var assign = require( './assign.js' ); + + +// MAIN // + +setReadOnly( main, 'assign', assign ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/lib/main.js b/lib/node_modules/@stdlib/math/base/special/sincospif/lib/main.js new file mode 100644 index 000000000000..9ad0d88baff6 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/lib/main.js @@ -0,0 +1,58 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var Float32Array = require( '@stdlib/array/float32' ); +var assign = require( './assign.js' ); + + +// MAIN // + +/** +* Simultaneously computes the sine and cosine of a number times π (single-precision). +* +* @param {number} x - input value +* @returns {Float32Array} two-element array containing sin(πx) and cos(πx) +* +* @example +* var v = sincospif( 0.0 ); +* // returns [ 0.0, 1.0 ] +* +* @example +* var v = sincospif( 0.5 ); +* // returns [ 1.0, 0.0 ] +* +* @example +* var v = sincospif( 0.1 ); +* // returns [ ~0.309, ~0.951 ] +* +* @example +* var v = sincospif( NaN ); +* // returns [ NaN, NaN ] +*/ +function sincospif( x ) { + return assign( x, new Float32Array( 2 ), 1, 0 ); +} + + +// EXPORTS // + +module.exports = sincospif; diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/lib/native.js b/lib/node_modules/@stdlib/math/base/special/sincospif/lib/native.js new file mode 100644 index 000000000000..94299e1cf03a --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/lib/native.js @@ -0,0 +1,61 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var Float32Array = require( '@stdlib/array/float32' ); +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Simultaneously computes the sine and cosine of a number times π (single-precision). +* +* @private +* @param {number} x - input value +* @returns {Float32Array} two-element array containing sin(πx) and cos(πx) +* +* @example +* var v = sincospif( 0.0 ); +* // returns [ 0.0, 1.0 ] +* +* @example +* var v = sincospif( 0.5 ); +* // returns [ 1.0, 0.0 ] +* +* @example +* var v = sincospif( 0.1 ); +* // returns [ ~0.309, ~0.951 ] +* +* @example +* var v = sincospif( NaN ); +* // returns [ NaN, NaN ] +*/ +function sincospif( x ) { + var out = new Float32Array( 2 ); + addon( x, out ); + return out; +} + + +// EXPORTS // + +module.exports = sincospif; diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/manifest.json b/lib/node_modules/@stdlib/math/base/special/sincospif/manifest.json new file mode 100644 index 000000000000..e4138d8de7f9 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/manifest.json @@ -0,0 +1,96 @@ +{ + "options": { + "task": "build" + }, + "fields": [ + { + "field": "src", + "resolve": true, + "relative": true + }, + { + "field": "include", + "resolve": true, + "relative": true + }, + { + "field": "libraries", + "resolve": false, + "relative": false + }, + { + "field": "libpath", + "resolve": true, + "relative": false + } + ], + "confs": [ + { + "task": "build", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/napi/argv", + "@stdlib/napi/argv-float", + "@stdlib/napi/argv-float32array", + "@stdlib/napi/export", + "@stdlib/math/base/special/absf", + "@stdlib/math/base/special/sincosf", + "@stdlib/math/base/special/floorf", + "@stdlib/math/base/special/copysignf", + "@stdlib/math/base/special/fmodf", + "@stdlib/math/base/assert/is-infinitef", + "@stdlib/math/base/assert/is-nanf", + "@stdlib/constants/float32/pi" + ] + }, + { + "task": "benchmark", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/math/base/special/absf", + "@stdlib/math/base/special/sincosf", + "@stdlib/math/base/special/floorf", + "@stdlib/math/base/special/copysignf", + "@stdlib/math/base/special/fmodf", + "@stdlib/math/base/assert/is-infinitef", + "@stdlib/math/base/assert/is-nanf", + "@stdlib/constants/float32/pi" + ] + }, + { + "task": "examples", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/math/base/special/absf", + "@stdlib/math/base/special/sincosf", + "@stdlib/math/base/special/floorf", + "@stdlib/math/base/special/copysignf", + "@stdlib/math/base/special/fmodf", + "@stdlib/math/base/assert/is-infinitef", + "@stdlib/math/base/assert/is-nanf", + "@stdlib/constants/float32/pi" + ] + } + ] +} diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/package.json b/lib/node_modules/@stdlib/math/base/special/sincospif/package.json new file mode 100644 index 000000000000..e6164ff51c82 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/package.json @@ -0,0 +1,73 @@ +{ + "name": "@stdlib/math/base/special/sincospif", + "version": "0.0.0", + "description": "Simultaneously compute the sine and cosine of a number times π (single-precision).", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "gypfile": true, + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "include": "./include", + "lib": "./lib", + "src": "./src", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "math.sin", + "math.cos", + "sinpi", + "cospi", + "sin", + "cos", + "sincospif", + "sine", + "cosine", + "trig", + "trigonometry", + "radians", + "angle" + ] +} diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/src/Makefile b/lib/node_modules/@stdlib/math/base/special/sincospif/src/Makefile new file mode 100644 index 000000000000..2caf905cedbe --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/src/Makefile @@ -0,0 +1,70 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + + +# RULES # + +#/ +# Removes generated files for building an add-on. +# +# @example +# make clean-addon +#/ +clean-addon: + $(QUIET) -rm -f *.o *.node + +.PHONY: clean-addon + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: clean-addon + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/src/addon.c b/lib/node_modules/@stdlib/math/base/special/sincospif/src/addon.c new file mode 100644 index 000000000000..6e2ea6b7c080 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/src/addon.c @@ -0,0 +1,41 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/math/base/special/sincospif.h" +#include "stdlib/napi/argv.h" +#include "stdlib/napi/argv_float.h" +#include "stdlib/napi/argv_float32array.h" +#include "stdlib/napi/export.h" +#include + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 2 ); + STDLIB_NAPI_ARGV_FLOAT( env, x, argv, 0 ); + STDLIB_NAPI_ARGV_FLOAT32ARRAY( env, y, ylen, argv, 1 ); + stdlib_base_sincospif( x, &y[ 0 ], &y[ 1 ] ); + return NULL; +} + +STDLIB_NAPI_MODULE_EXPORT_FCN( addon ) diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/src/main.c b/lib/node_modules/@stdlib/math/base/special/sincospif/src/main.c new file mode 100644 index 000000000000..fdfbf8978b0f --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/src/main.c @@ -0,0 +1,98 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/math/base/special/sincospif.h" +#include "stdlib/math/base/special/absf.h" +#include "stdlib/math/base/special/sincosf.h" +#include "stdlib/math/base/special/floorf.h" +#include "stdlib/math/base/special/copysignf.h" +#include "stdlib/math/base/special/fmodf.h" +#include "stdlib/math/base/assert/is_infinitef.h" +#include "stdlib/math/base/assert/is_nanf.h" +#include "stdlib/constants/float32/pi.h" + +/** +* Simultaneously computes the sine and cosine of a number times π (single-precision). +* +* @param x input value +* @param sine destination to store the sine +* @param cosine destination to store the cosine +* +* @example +* float x = 0.0f; +* +* float cosine; +* float sine; +* stdlib_base_sincospif( x, &sine, &cosine ); +*/ +void stdlib_base_sincospif( const float x, float* sine, float* cosine ) { + float tmp; + float ix; + float ar; + float r; + + if ( stdlib_base_is_nanf( x ) || stdlib_base_is_infinitef( x ) ) { + *sine = 0.0f / 0.0f; // NaN + *cosine = 0.0f / 0.0f; // NaN + return; + } + + r = stdlib_base_fmodf( x, 2.0f ); + ar = stdlib_base_absf( r ); + + if ( ar == 0.0f || ar == 1.0f ) { + ix = stdlib_base_floorf( ar ); + *sine = stdlib_base_copysignf( 0.0f, r ); + *cosine = ( stdlib_base_fmodf( ix, 2.0f ) == 1.0f ) ? -1.0f : 1.0f; + return; + } + + if ( ar < 0.25f ) { + stdlib_base_sincosf( STDLIB_CONSTANT_FLOAT32_PI * r, sine, cosine ); + return; + } + + if ( ar < 0.75f ) { + ar = 0.5f - ar; + stdlib_base_sincosf( STDLIB_CONSTANT_FLOAT32_PI * ar, sine, cosine ); + tmp = *sine; + *sine = stdlib_base_copysignf( *cosine, r ); + *cosine = tmp; + return; + } + + if ( ar < 1.25f ) { + r = stdlib_base_copysignf( 1.0f, r ) - r; + stdlib_base_sincosf( STDLIB_CONSTANT_FLOAT32_PI * r, sine, cosine ); + *cosine *= -1.0f; + return; + } + + if ( ar < 1.75f ) { + ar -= 1.5f; + stdlib_base_sincosf( STDLIB_CONSTANT_FLOAT32_PI * ar, sine, cosine ); + tmp = *sine; + *sine = -stdlib_base_copysignf( *cosine, r ); + *cosine = tmp; + return; + } + + r -= stdlib_base_copysignf( 2.0f, r ); + stdlib_base_sincosf( STDLIB_CONSTANT_FLOAT32_PI * r, sine, cosine ); + return; +} diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/test/fixtures/julia/REQUIRE b/lib/node_modules/@stdlib/math/base/special/sincospif/test/fixtures/julia/REQUIRE new file mode 100644 index 000000000000..308c3be89c85 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/test/fixtures/julia/REQUIRE @@ -0,0 +1,2 @@ +julia 1.5 +JSON 0.21 diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/test/fixtures/julia/decimals.json b/lib/node_modules/@stdlib/math/base/special/sincospif/test/fixtures/julia/decimals.json new file mode 100644 index 000000000000..0a7177643f7b --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/test/fixtures/julia/decimals.json @@ -0,0 +1 @@ +{"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],"cos":[1.0,0.9511534530228996,0.8093857823947705,0.5885467104819188,0.3102106894855472,0.0015692264556667226,-0.30722553916178263,-0.58600649131677,-0.8075386562578029,-0.950179871381357,-0.9999950750566616,-0.9521176659107179,-0.811224936173504,-0.5910811325286653,-0.31319278426917446,-0.0047076639102974095,0.3042373627012731,0.5834605000541262,0.8056835759565839,0.9491969305757587,0.9999803002751568,0.9530725005474241,0.8130560994785208,0.5936097324932398,0.31617179413936874,0.007846054994972068,-0.3012461895372182,-0.5809087617716404,-0.8038205597634447,-0.9482046402879605,-0.9999556758010154,-0.9540179475280053,-0.8148792542731221,-0.596132485469219,-0.31914768975322033,-0.010984368796894167,0.2982520491323346,0.5783513016036816,0.8019496260288834,0.9472030102919091,0.9999212018767856,0.9549539975399158,0.8166943825994136,0.5986493666077721,0.3221204417984948,0.014122574404028403,-0.2952549709786086,-0.5757881447409429,-0.8000707931813853,-0.9461920504535466,-0.9998768788420318,-0.9558806413631561,-0.8185014665785871,-0.6011603511179051,-0.3250900209939213,-0.017260640905405175,0.29225498459683513,0.5732193164302286,0.798184079727241,0.9451717707307128,0.9998227071333307,0.9567978698704157,0.8203004884110702,0.6036654142667051,0.3280563980894813,0.020398537391425064,-0.28925211953658264,-0.5706448419742066,-0.7962895042503644,-0.9441421811730474,-0.9997586872842676,-0.9577056740270846,-0.8220914303767015,-0.6061645313795839,-0.3310195438666966,-0.023536232954118646,0.2862464053757318,0.5680647467311586,0.7943870854121091,0.9431032919218906,0.9996848199254319,0.9586040448913948,0.8238742748349058,0.6086576778405213,0.333979429138917,0.026673696687629467,-0.2832378717202264,-0.5654790561147303,-0.792476841951085,-0.9420551132101841,-0.9996011057844066,-0.9594929736144951,-0.8256490042248672,-0.6111448290923069,-0.336936024751608,-0.029810897688250668,0.280226548203782,0.5628877955936812,0.7905587926829739,0.9409976553623693,0.9995075456857675,0.9603724514405382,0.8274156010657022,0.6136259606367831,0.339889301582596,0.032947805054907915,-0.277212464487594,-0.5602909906916338,-0.7886329565003436,-0.9399309287943014,-0.9994041405510709,-0.9612424697067672,-0.8291740479566323,-0.6161010480350851,-0.34283923054252285,-0.03608438788941912,0.27419565026004544,0.5576886669868222,0.7866993523724624,0.9388549440130859,0.9992908913988456,0.9621030198436008,0.8309243275771547,0.6185700669078826,0.3457857825748805,0.03922061529679882,-0.2711761352364146,-0.5550808501118398,-0.7847579993451116,-0.9377697116170661,-0.9991677993445831,-0.9629540933747177,-0.8326664226872137,-0.6210329929355844,-0.34872892865646543,-0.04235645638556246,0.26815394915858226,0.5524675657533876,0.7828089165404264,0.936675242295658,0.9990348656007261,0.96379568191714,0.8344003161273698,0.6234898018587186,0.3516686397976222,0.04549188026803067,-0.2651291217947388,-0.5498488396520201,-0.7808521231565962,-0.9355715468292605,-0.9988920914766568,-0.964627777181316,-0.8361259908189689,-0.6259404694779603,-0.3546048870425292,-0.04862685606063354,0.262101682939091,0.5472246976018927,0.7788876384678417,0.9344586360891488,0.9987394783786844,0.9654503709712016,0.8378434297642868,0.6283849716545113,0.35753764146948386,0.05176135288421477,-0.2590716624115685,-0.5445951654505448,-0.7769154818241144,-0.9333365210373676,-0.9985770278100303,-0.9662634551843411,-0.8395526160467932,-0.6308232843103022,-0.36046687419118745,-0.05489533986433586,0.25603909005753006,0.5419602690984952,0.7749356726509338,0.932205212726623,0.9984047413708145,0.9670670218119474,0.8412535328311724,0.6332553834282297,0.36339255635502954,0.058028786131580204,-0.2530039957474698,-0.5393200344992116,-0.7729482304491959,-0.9310647223001737,-0.9982226207580387,-0.96786106293898,-0.8429461633635869,-0.635681245052393,-0.36631465914337236,-0.06116166082185717,0.2499664093767659,0.5366744876587057,0.7709531747949812,0.929915060991721,0.9980306677655703,0.9686455707442129,0.8446304909718177,0.6381008452883301,0.36923315377383464,0.0642939330767061,-0.24692636086521347,-0.5340236546353143,-0.7689505253393617,-0.9287562401252987,-0.9978288842841246,-0.9694205375003553,-0.8463064990654289,-0.6405141603032528,-0.372148011499575,-0.06742557204360021,0.24388388015698906,0.531367561539442,0.7669403018082076,0.9275882711151608,0.9976172723012461,0.9701859555740613,0.8479741711359305,0.6429211663262817,0.3750592036095751,0.07055654687620605,-0.24083899722018282,-0.5287062345333049,-0.764922524001993,-0.92641116546567,-0.9973958339012919,-0.9709418174260496,-0.8496334907569417,-0.6453218396486803,-0.3779667014289227,-0.0736868267348654,0.23779174204654666,0.5260396998306723,0.7628972117956005,0.9252249347711833,0.9971645712653989,0.9716881156111666,0.8512844415843522,0.6477161566240883,0.3808704763190936,0.07681638078663186,-0.23474214465119866,-0.5233679836966091,-0.7608643851381259,-0.9240295907159387,-0.996923486671481,-0.9724248427784598,-0.8529270073564835,-0.650104093668755,-0.38377049967819304,-0.07994517820575266,0.23169023507232764,0.5206911124472162,0.7588240640526814,0.9228251450739569,0.9966725824941941,0.9731519916712501,0.854561171894249,0.6524856272617711,0.38666674294140213,0.0830731881739278,-0.22863604337089707,-0.5180091124493722,-0.7567762686361985,-0.9216116097088566,-0.9964118612049159,-0.9738695551272032,-0.856186919101313,-0.6548607339453004,-0.3895591775810116,-0.08620037988061353,0.2255795996303491,0.515322010120473,0.75472101905923,0.9203889965738408,0.9961413253717215,0.9745775260784005,0.8578042329642498,0.6572293903247778,0.392447775106868,0.08932672252332598,-0.22252093395630818,-0.5126298319281722,-0.7526583355657805,-0.9191573177115103,-0.9958609776593583,-0.9752758975514083,-0.8594130975527011,-0.6595915730692735,-0.39533250706661316,-0.09245218530794436,0.21946007647628463,0.5099326043901199,0.7505882384729903,0.9179165852537624,0.9955708208292194,0.9759646626673468,0.8610134970195331,0.6619472589115217,0.39821334504596406,0.09557673744901445,-0.21639705733937772,-0.5072303540737015,-0.7485107481711102,-0.9166668114216711,-0.9952708577393169,-0.9766438146419576,-0.8626054156009698,-0.6642964246482838,-0.40109026066899317,-0.09870034817005174,0.21333190671597888,0.5045231075958151,0.7464258851231844,0.915408008525367,0.9949610913442529,0.9773133467856706,0.864188837616839,0.6666390471405432,0.4039632255984075,0.10182298670384461,-0.21026465479747436,-0.5018108916224547,-0.7443336698648776,-0.9141401889639159,-0.9946415246951916,-0.9779732525036703,-0.8657637474705903,-0.6689751033137342,-0.40683221153582827,-0.10494462229275738,0.20719533179594798,0.49909373286867864,0.742234123004273,0.9128633652251971,0.9943121609398281,0.9786235252959509,0.8673301296495403,0.671304570157968,0.4096971902220689,0.10806522418903322,-0.20412396794392718,-0.49637165809819284,-0.7401272652216693,-0.9115775498857795,-0.9939730033223582,-0.9792641587574173,-0.868887968725002,-0.6736274247282602,-0.41255813343741415,-0.11118476165509714,0.20105059349391047,0.4936446941231253,0.7380131172693769,0.9102827556107986,0.9936240551834458,0.9798951465778981,0.8704372493524369,0.6759436441447565,0.4154150130018772,0.11430320396383638,-0.1979752387183097,-0.49091286780376203,-0.7358916999715134,-0.9089789951538405,-0.9932653199601932,-0.9805164825422256,-0.8719779562716067,-0.6782532055929582,-0.4182678007755587,-0.11742052039899199,0.1948979339090865,0.4881762060482828,0.733763034223799,0.9076662813567794,0.9928968011860967,0.9811281605303109,0.8735100743067227,0.6805560863239468,0.4211164686588021,0.12053668025532817,-0.1918187093772789,-0.4854347358124958,-0.7316271409933499,-0.9063446271497066,-0.9925185024910269,-0.9817301745172043,-0.8750335883665958,-0.6828522636545916,-0.42396098859255155,-0.12365165283902345,0.1887375954529215,0.4826884840995721,0.7294840413184877,0.9050140455507666,0.9921304276011831,0.9823225185731316,0.8765484834447852,0.6851417149678389,0.42680133255860797,0.12676540746792872,-0.18565462248463727,-0.47993747795977987,-0.7273337563084709,-0.903674549666037,-0.9917325803390618,-0.9829051868635711,-0.8780547446197461,-0.6874244177128364,-0.4296374725799053,-0.1298779134719581,0.18256982083936055,0.4771817444902179,0.7251763071433783,0.9023261526894006,0.9913249646234078,0.983478173649306,0.8795523570549659,0.6897003494052205,0.43246938072078567,0.13298914019325794,-0.17948322090203797,-0.4744213108345682,-0.7230117150738399,-0.9009688679024149,-0.9909075844691926,-0.9840414732864815,-0.8810413059991534,-0.6919694876273221,-0.4352970290872748,-0.1360990569865977,0.17639485307532915,0.4716562041827501,0.7208400014208419,0.899602708674191,0.9904804439875632,0.98459508022666,0.8825215767863192,0.694231810028387,0.43812038982733664,0.1392076332196493,-0.1733047477793072,-0.4688864517707705,-0.7186611875755181,-0.8982276884612228,-0.9900435473858052,-0.985138989016872,-0.883993154835964,-0.6964872943247957,-0.4409394351312281,-0.14231483827328917,0.1702129354511811,0.4661120808803767,0.7164752949989377,0.8968438208073135,0.9895968989673004,0.9856731942996854,0.8854560256532107,0.6987359183002837,0.44375413723165225,0.14542064154189963,-0.16711944654490793,-0.4633331188388077,-0.7142823452219105,-0.8954511193434026,-0.9891405031314853,-0.9861976908132347,-0.8869101748289475,-0.7009776598061435,-0.4465644684041123,-0.14852501243367047,0.1640243115310248,0.4605495930185245,0.7120823598447122,0.8940495977874416,0.9886743643738104,0.9867124733912886,0.88835558803997,0.7032124967615073,0.4493704009671648,0.15162792037087813,-0.1609275608962609,-0.4577615308369411,-0.709875360536965,-0.8926392699442591,-0.9881984872856829,-0.9872175369632974,-0.8897922510491216,-0.7054404071534685,-0.4521719072826919,-0.15472933479027517,0.157829225143259,0.45496895975617396,0.707661369037362,0.8912201497054245,0.9877128765544417,0.9877128765544417,0.8912201497054245,0.707661369037362,0.45496895975617396,0.157829225143259,-0.15472933479027517,-0.4521719072826919,-0.7054404071534685,-0.8897922510491216,-0.9872175369632974,-0.9881984872856829,-0.8926392699442591,-0.709875360536965,-0.4577615308369411,-0.1609275608962609,0.15162792037087813,0.4493704009671648,0.7032124967615073,0.88835558803997,0.9867124733912886,0.9886743643738104,0.8940495977874416,0.7120823598447122,0.4605495930185245,0.1640243115310248,-0.14852501243367047,-0.4465644684041123,-0.7009776598061435,-0.8869101748289475,-0.9861976908132347,-0.9891405031314853,-0.8954511193434026,-0.7142823452219105,-0.4633331188388077,-0.16711944654490793,0.14542064154189963,0.44375413723165225,0.6987359183002837,0.8854560256532107,0.9856731942996854,0.9895968989673004,0.8968438208073135,0.7164752949989377,0.4661120808803767,0.1702129354511811,-0.14231483827328917,-0.4409394351312281,-0.6964872943247957,-0.883993154835964,-0.985138989016872,-0.9900435473858052,-0.8982276884612228,-0.7186611875755181,-0.4688864517707705,-0.1733047477793072,0.1392076332196493,0.43812038982733664,0.694231810028387,0.8825215767863192,0.98459508022666,0.9904804439875632,0.899602708674191,0.7208400014208419,0.4716562041827501,0.17639485307532915,-0.1360990569865977,-0.4352970290872748,-0.6919694876273221,-0.8810413059991534,-0.9840414732864815,-0.9909075844691926,-0.9009688679024149,-0.7230117150738399,-0.4744213108345682,-0.17948322090203797,0.13298914019325794,0.43246938072078567,0.6897003494052205,0.8795523570549659,0.983478173649306,0.9913249646234078,0.9023261526894006,0.7251763071433783,0.4771817444902179,0.18256982083936055,-0.1298779134719581,-0.4296374725799053,-0.6874244177128364,-0.8780547446197461,-0.9829051868635711,-0.9917325803390618,-0.903674549666037,-0.7273337563084709,-0.47993747795977987,-0.18565462248463727,0.12676540746792872,0.42680133255860797,0.6851417149678389,0.8765484834447852,0.9823225185731316,0.9921304276011831,0.9050140455507666,0.7294840413184877,0.4826884840995721,0.1887375954529215,-0.12365165283902345,-0.42396098859255155,-0.6828522636545916,-0.8750335883665958,-0.9817301745172043,-0.9925185024910269,-0.9063446271497066,-0.7316271409933499,-0.4854347358124958,-0.1918187093772789,0.12053668025532817,0.4211164686588021,0.6805560863239468,0.8735100743067227,0.9811281605303109,0.9928968011860967,0.9076662813567794,0.733763034223799,0.4881762060482828,0.1948979339090865,-0.11742052039899199,-0.4182678007755587,-0.6782532055929582,-0.8719779562716067,-0.9805164825422256,-0.9932653199601932,-0.9089789951538405,-0.7358916999715134,-0.49091286780376203,-0.1979752387183097,0.11430320396383638,0.4154150130018772,0.6759436441447565,0.8704372493524369,0.9798951465778981,0.9936240551834483,0.9102827556107986,0.7380131172693769,0.4936446941231253,0.2010505934938886,-0.11118476165507495,-0.41255813343741415,-0.6736274247282602,-0.868887968725002,-0.9792641587574219,-0.9939730033223606,-0.9115775498857795,-0.7401272652216693,-0.49637165809819284,-0.20412396794390533,0.10806522418901103,0.4096971902220689,0.671304570157968,0.8673301296495514,0.9786235252959554,0.9943121609398304,0.9128633652251971,0.742234123004273,0.4990937328686593,0.2071953317959698,-0.10494462229273517,-0.40683221153582827,-0.6689751033137342,-0.8657637474706015,-0.9779732525036656,-0.9946415246951916,-0.9141401889639159,-0.7443336698648776,-0.5018108916224354,-0.21026465479749618,0.10182298670384461,0.4039632255984075,0.6666390471405432,0.8641888376168502,0.977313346785666,0.994961091344254,0.915408008525367,0.746425885123177,0.5045231075957959,0.21333190671598978,-0.09870034817004063,-0.40109026066899317,-0.6642964246482921,-0.8626054156009811,-0.9766438146419552,-0.9952708577393169,-0.9166668114216711,-0.7485107481711027,-0.5072303540737207,-0.21639705733938863,0.09557673744901445,0.39821334504597433,0.6619472589115301,0.8610134970195218,0.9759646626673444,0.9955708208292194,0.917916585253758,0.7505882384729755,0.5099326043901391,0.2194600764762955,-0.09245218530794436,-0.3953325070666234,-0.6595915730692903,-0.8594130975526897,-0.9752758975514059,-0.9958609776593583,-0.9191573177115059,-0.7526583355657658,-0.5126298319281818,-0.22252093395631906,0.08932672252332598,0.3924477751068783,0.6572293903247945,0.857804232964244,0.9745775260784005,0.9961413253717215,0.9203889965738364,0.7547210190592446,0.5153220101204826,0.2255795996303491,-0.08620037988062465,-0.3895591775810219,-0.6548607339452835,-0.8561869191013072,-0.9738695551272032,-0.996411861204915,-0.9216116097088523,-0.7567762686362132,-0.5180091124493816,-0.22863604337089707,0.08307318817393891,0.3866667429414227,0.6524856272617542,0.8545611718942432,0.9731519916712501,0.9966725824941932,0.9228251450739483,0.7588240640526888,0.5206911124472257,0.23169023507232764,-0.07994517820576379,-0.38377049967821364,-0.6501040936687466,-0.8529270073564835,-0.9724248427784598,-0.9969234866714801,-0.9240295907159473,-0.7608643851381333,-0.5233679836966091,-0.2347421446511878,0.07681638078664299,0.38087047631907295,0.6477161566240799,0.8512844415843522,0.9716881156111692,0.997164571265398,0.9252249347711918,0.7628972117956078,0.5260396998306723,0.2377917420465358,-0.07368682673488768,-0.377966701428902,-0.6453218396486717,-0.8496334907569417,-0.9709418174260522,-0.9973958339012903,-0.9264111654656743,-0.7649225240020002,-0.5287062345333049,-0.240838997220172,0.07055654687622831,0.3750592036095648,0.6429211663262817,0.8479741711359305,0.970185955574064,0.9976172723012476,0.9275882711151651,0.7669403018082076,0.5313675615394325,0.24388388015697823,-0.06742557204357794,-0.3721480114995646,-0.6405141603032528,-0.8463064990654348,-0.969420537500358,-0.9978288842841261,-0.9287562401253028,-0.7689505253393617,-0.5340236546353049,-0.24692636086519185,0.06429393307668381,0.36923315377382426,0.6381008452883301,0.8446304909718237,0.9686455707442184,0.998030667765571,0.9299150609917252,0.7709531747949812,0.5366744876586964,0.24996640937674428,-0.061161660821846035,-0.36631465914337236,-0.635681245052393,-0.8429461633635928,-0.9678610629389743,-0.9982226207580394,-0.9310647223001737,-0.7729482304491959,-0.5393200344992022,-0.2530039957474914,0.05802878613156907,0.36339255635502954,0.6332553834282384,0.8412535328311784,0.9670670218119417,0.998404741370815,0.932205212726623,0.7749356726509268,0.5419602690984764,0.25603909005755165,-0.05489533986432472,-0.36046687419118745,-0.6308232843103109,-0.8395526160468053,-0.9662634551843382,-0.9985770278100309,-0.9333365210373676,-0.7769154818241074,-0.5445951654505261,-0.25907166241157925,0.05176135288421477,0.35753764146948386,0.62838497165452,0.8378434297642989,0.9654503709711987,0.9987394783786846,0.9344586360891468,0.7788876384678312,0.5472246976019114,0.26210168293910174,-0.04862685606063354,-0.3546048870425344,-0.6259404694779733,-0.8361259908189598,-0.964627777181313,-0.9988920914766568,-0.9355715468292566,-0.7808521231565857,-0.5498488396520341,-0.26512912179474957,0.04549188026803067,0.35166863979763263,0.6234898018587317,0.8344003161273605,0.9637956819171385,0.9990348656007261,0.9366752422956541,0.7828089165404125,0.5524675657534015,0.26815394915858765,-0.042356456385568036,-0.34872892865647587,-0.621032992935602,-0.8326664226872075,-0.9629540933747162,-0.9991677993445829,-0.9377697116170602,-0.7847579993451254,-0.5550808501118492,-0.2711761352364146,0.039220615296804394,0.3457857825748962,0.6185700669078694,0.8309243275771485,0.9621030198436008,0.9992908913988454,0.9388549440130801,0.7866993523724727,0.5576886669868315,0.27419565026004544,-0.036084387889430275,-0.34283923054253856,-0.6161010480350719,-0.8291740479566292,-0.9612424697067672,-0.9994041405510704,-0.9399309287942939,-0.7886329565003539,-0.5602909906916385,-0.27721246448758863,0.032947805054919066,0.339889301582617,0.6136259606367743,0.8274156010656991,0.9603724514405397,0.9995075456857669,0.9409976553623769,0.7905587926829808,0.5628877955936812,0.2802265482037766,-0.029810897688267404,-0.336936024751587,-0.6111448290922982,-0.8256490042248672,-0.9594929736144967,-0.9996011057844062,-0.9420551132101898,-0.7924768419510918,-0.5654790561147303,-0.2832378717202157,0.026673696687646204,0.33397942913890116,0.6086576778405168,0.8238742748349058,0.958604044891398,0.9996848199254315,0.9431032919218952,0.7943870854121124,0.5680647467311564,0.28624640537571844,-0.02353623295414096,-0.33101954386668336,-0.6061645313795795,-0.8220914303767047,-0.9577056740270887,-0.9997586872842681,-0.944142181173051,-0.7962895042503662,-0.5706448419742021,-0.28925211953656665,0.020398537391405534,0.32805639808947074,0.6036654142667051,0.820300488411075,0.9567978698704206,0.9998227071333311,0.9451717707307156,0.798184079727241,0.5732193164302217,0.2922549845968164,-0.017260640905388435,-0.3250900209939134,-0.6011603511179073,-0.8185014665785936,-0.9558806413631618,-0.9998768788420319,-0.9461920504535485,-0.8000707931813836,-0.5757881447409338,-0.2952549709785873,0.014122574404014453,0.32212044179848953,0.5986493666077767,0.8166943825994217,0.9549539975399092,0.9999212018767858,0.94720301029191,0.8019496260288792,0.5783513016036692,0.29825204913235326,-0.010984368796883007,-0.31914768975321905,-0.5961324854692258,-0.8148792542731318,-0.9540179475279998,-0.9999556758010154,-0.9482046402879605,-0.8038205597634389,-0.5809087617716256,-0.3012461895372342,0.007846054994965093,0.31617179413937,0.5936097324932488,0.8130560994785322,0.9530725005474194,0.9999803002751568,0.9491969305757576,0.8056835759565766,0.5834605000541087,0.30423736270128643,-0.004707663910292526,-0.3131927842691791,-0.5910811325286766,-0.8112249361734913,-0.952117665910714,-0.9999950750566616,-0.950179871381355,-0.8075386562577938,-0.5860064913167861,-0.3072255391617929,0.0015692264556651531,0.3102106894855545,0.5885467104819324,0.8093857823947597,0.9511534530228968,1.0,0.9511534530228968,0.8093857823947597,0.5885467104819324,0.3102106894855545,0.0015692264556651531,-0.3072255391617929,-0.5860064913167861,-0.8075386562577938,-0.950179871381355,-0.9999950750566616,-0.952117665910714,-0.8112249361734913,-0.5910811325286766,-0.3131927842691791,-0.004707663910292526,0.30423736270128643,0.5834605000541087,0.8056835759565766,0.9491969305757576,0.9999803002751568,0.9530725005474194,0.8130560994785322,0.5936097324932488,0.31617179413937,0.007846054994965093,-0.3012461895372342,-0.5809087617716256,-0.8038205597634389,-0.9482046402879605,-0.9999556758010154,-0.9540179475279998,-0.8148792542731318,-0.5961324854692258,-0.31914768975321905,-0.010984368796883007,0.29825204913235326,0.5783513016036692,0.8019496260288792,0.94720301029191,0.9999212018767858,0.9549539975399092,0.8166943825994217,0.5986493666077767,0.32212044179848953,0.014122574404014453,-0.2952549709785873,-0.5757881447409338,-0.8000707931813836,-0.9461920504535485,-0.9998768788420319,-0.9558806413631618,-0.8185014665785936,-0.6011603511179073,-0.3250900209939134,-0.017260640905388435,0.2922549845968164,0.5732193164302217,0.798184079727241,0.9451717707307156,0.9998227071333311,0.9567978698704206,0.820300488411075,0.6036654142667051,0.32805639808947074,0.020398537391405534,-0.28925211953656665,-0.5706448419742021,-0.7962895042503662,-0.944142181173051,-0.9997586872842681,-0.9577056740270887,-0.8220914303767047,-0.6061645313795795,-0.33101954386668336,-0.02353623295414096,0.28624640537571844,0.5680647467311564,0.7943870854121124,0.9431032919218952,0.9996848199254315,0.958604044891398,0.8238742748349058,0.6086576778405168,0.33397942913890116,0.026673696687646204,-0.2832378717202157,-0.5654790561147303,-0.7924768419510918,-0.9420551132101898,-0.9996011057844062,-0.9594929736144967,-0.8256490042248672,-0.6111448290922982,-0.336936024751587,-0.029810897688267404,0.2802265482037766,0.5628877955936812,0.7905587926829808,0.9409976553623769,0.9995075456857669,0.9603724514405397,0.8274156010656991,0.6136259606367743,0.339889301582617,0.032947805054919066,-0.27721246448758863,-0.5602909906916385,-0.7886329565003539,-0.9399309287942939,-0.9994041405510704,-0.9612424697067672,-0.8291740479566292,-0.6161010480350719,-0.34283923054253856,-0.036084387889430275,0.27419565026004544,0.5576886669868315,0.7866993523724727,0.9388549440130801,0.9992908913988454,0.9621030198436008,0.8309243275771485,0.6185700669078694,0.3457857825748962,0.039220615296804394,-0.2711761352364146,-0.5550808501118492,-0.7847579993451254,-0.9377697116170602,-0.9991677993445829,-0.9629540933747162,-0.8326664226872075,-0.621032992935602,-0.34872892865647587,-0.042356456385568036,0.26815394915858765,0.5524675657534015,0.7828089165404125,0.9366752422956541,0.9990348656007261,0.9637956819171385,0.8344003161273605,0.6234898018587317,0.35166863979763263,0.04549188026803067,-0.26512912179474957,-0.5498488396520341,-0.7808521231565857,-0.9355715468292566,-0.9988920914766568,-0.964627777181313,-0.8361259908189598,-0.6259404694779733,-0.3546048870425344,-0.04862685606063354,0.26210168293910174,0.5472246976019114,0.7788876384678312,0.9344586360891468,0.9987394783786846,0.9654503709711987,0.8378434297642989,0.62838497165452,0.35753764146948386,0.05176135288421477,-0.25907166241157925,-0.5445951654505261,-0.7769154818241074,-0.9333365210373676,-0.9985770278100309,-0.9662634551843382,-0.8395526160468053,-0.6308232843103109,-0.36046687419118745,-0.05489533986432472,0.25603909005755165,0.5419602690984764,0.7749356726509268,0.932205212726623,0.998404741370815,0.9670670218119417,0.8412535328311784,0.6332553834282384,0.36339255635502954,0.05802878613156907,-0.2530039957474914,-0.5393200344992022,-0.7729482304491959,-0.9310647223001737,-0.9982226207580394,-0.9678610629389743,-0.8429461633635928,-0.635681245052393,-0.36631465914337236,-0.061161660821846035,0.24996640937674428,0.5366744876586964,0.7709531747949812,0.9299150609917252,0.998030667765571,0.9686455707442184,0.8446304909718237,0.6381008452883301,0.36923315377382426,0.06429393307668381,-0.24692636086519185,-0.5340236546353049,-0.7689505253393617,-0.9287562401253028,-0.9978288842841261,-0.969420537500358,-0.8463064990654348,-0.6405141603032528,-0.3721480114995646,-0.06742557204357794,0.24388388015697823,0.5313675615394325,0.7669403018082076,0.9275882711151651,0.9976172723012476,0.970185955574064,0.8479741711359305,0.6429211663262817,0.3750592036095648,0.07055654687622831,-0.240838997220172,-0.5287062345333049,-0.7649225240020002,-0.9264111654656743,-0.9973958339012903,-0.9709418174260522,-0.8496334907569417,-0.6453218396486717,-0.377966701428902,-0.07368682673488768,0.2377917420465358,0.5260396998306723,0.7628972117956078,0.9252249347711918,0.997164571265398,0.9716881156111692,0.8512844415843522,0.6477161566240799,0.38087047631907295,0.07681638078664299,-0.2347421446511878,-0.5233679836966091,-0.7608643851381333,-0.9240295907159473,-0.9969234866714801,-0.9724248427784598,-0.8529270073564835,-0.6501040936687466,-0.38377049967821364,-0.07994517820576379,0.23169023507232764,0.5206911124472257,0.7588240640526888,0.9228251450739483,0.9966725824941932,0.9731519916712501,0.8545611718942432,0.6524856272617542,0.3866667429414227,0.08307318817393891,-0.22863604337089707,-0.5180091124493816,-0.7567762686362132,-0.9216116097088523,-0.996411861204915,-0.9738695551272032,-0.8561869191013072,-0.6548607339452835,-0.3895591775810219,-0.08620037988062465,0.2255795996303491,0.5153220101204826,0.7547210190592446,0.9203889965738364,0.9961413253717215,0.9745775260784005,0.857804232964244,0.6572293903247945,0.3924477751068783,0.08932672252332598,-0.22252093395631906,-0.5126298319281818,-0.7526583355657658,-0.9191573177115059,-0.9958609776593583,-0.9752758975514059,-0.8594130975526897,-0.6595915730692903,-0.3953325070666234,-0.09245218530794436,0.2194600764762955,0.5099326043901391,0.7505882384729755,0.917916585253758,0.9955708208292194,0.9759646626673444,0.8610134970195218,0.6619472589115301,0.39821334504597433,0.09557673744901445,-0.21639705733938863,-0.5072303540737207,-0.7485107481711027,-0.9166668114216711,-0.9952708577393169,-0.9766438146419552,-0.8626054156009811,-0.6642964246482921,-0.40109026066899317,-0.09870034817004063,0.21333190671598978,0.5045231075957959,0.746425885123177,0.915408008525367,0.994961091344254,0.977313346785666,0.8641888376168502,0.6666390471405432,0.4039632255984075,0.10182298670384461,-0.21026465479749618,-0.5018108916224354,-0.7443336698648776,-0.9141401889639159,-0.9946415246951916,-0.9779732525036656,-0.8657637474706015,-0.6689751033137342,-0.40683221153582827,-0.10494462229273517,0.2071953317959698,0.4990937328686593,0.742234123004273,0.9128633652251971,0.9943121609398304,0.9786235252959554,0.8673301296495514,0.671304570157968,0.4096971902220689,0.10806522418901103,-0.20412396794390533,-0.49637165809819284,-0.7401272652216693,-0.9115775498857795,-0.9939730033223606,-0.9792641587574219,-0.868887968725002,-0.6736274247282602,-0.41255813343741415,-0.11118476165507495,0.2010505934938886,0.4936446941231253,0.7380131172693769,0.9102827556107986,0.9936240551834483,0.9798951465778981,0.8704372493524369,0.6759436441447565,0.4154150130018772,0.11430320396383638,-0.1979752387183097,-0.49091286780376203,-0.7358916999715134,-0.9089789951538405,-0.9932653199601932,-0.9805164825422256,-0.8719779562716067,-0.6782532055929582,-0.4182678007755587,-0.11742052039899199,0.1948979339090865,0.4881762060482828,0.733763034223799,0.9076662813567794,0.9928968011860967,0.9811281605303109,0.8735100743067227,0.6805560863239468,0.4211164686588021,0.12053668025532817,-0.1918187093772789,-0.4854347358124958,-0.7316271409933499,-0.9063446271497066,-0.9925185024910269,-0.9817301745172043,-0.8750335883665958,-0.6828522636545916,-0.42396098859255155,-0.12365165283902345,0.1887375954529215,0.4826884840995721,0.7294840413184877,0.9050140455507666,0.9921304276011831,0.9823225185731316,0.8765484834447852,0.6851417149678389,0.42680133255860797,0.12676540746792872,-0.18565462248463727,-0.47993747795977987,-0.7273337563084709,-0.903674549666037,-0.9917325803390618,-0.9829051868635711,-0.8780547446197461,-0.6874244177128364,-0.4296374725799053,-0.1298779134719581,0.18256982083936055,0.4771817444902179,0.7251763071433783,0.9023261526894006,0.9913249646234078,0.983478173649306,0.8795523570549659,0.6897003494052205,0.43246938072078567,0.13298914019325794,-0.17948322090203797,-0.4744213108345682,-0.7230117150738399,-0.9009688679024149,-0.9909075844691926,-0.9840414732864815,-0.8810413059991534,-0.6919694876273221,-0.4352970290872748,-0.1360990569865977,0.17639485307532915,0.4716562041827501,0.7208400014208419,0.899602708674191,0.9904804439875632,0.98459508022666,0.8825215767863192,0.694231810028387,0.43812038982733664,0.1392076332196493,-0.1733047477793072,-0.4688864517707705,-0.7186611875755181,-0.8982276884612228,-0.9900435473858052,-0.985138989016872,-0.883993154835964,-0.6964872943247957,-0.4409394351312281,-0.14231483827328917,0.1702129354511811,0.4661120808803767,0.7164752949989377,0.8968438208073135,0.9895968989673004,0.9856731942996854,0.8854560256532107,0.6987359183002837,0.44375413723165225,0.14542064154189963,-0.16711944654490793,-0.4633331188388077,-0.7142823452219105,-0.8954511193434026,-0.9891405031314853,-0.9861976908132347,-0.8869101748289475,-0.7009776598061435,-0.4465644684041123,-0.14852501243367047,0.1640243115310248,0.4605495930185245,0.7120823598447122,0.8940495977874416,0.9886743643738104,0.9867124733912886,0.88835558803997,0.7032124967615073,0.4493704009671648,0.15162792037087813,-0.1609275608962609,-0.4577615308369411,-0.709875360536965,-0.8926392699442591,-0.9881984872856829,-0.9872175369632974,-0.8897922510491216,-0.7054404071534685,-0.4521719072826919,-0.15472933479027517,0.157829225143259,0.45496895975617396,0.707661369037362,0.8912201497054245,0.9877128765544417,0.9877128765544417,0.8912201497054245,0.707661369037362,0.45496895975617396,0.157829225143259,-0.15472933479027517,-0.4521719072826919,-0.7054404071534685,-0.8897922510491216,-0.9872175369632974,-0.9881984872856829,-0.8926392699442591,-0.709875360536965,-0.4577615308369411,-0.1609275608962609,0.15162792037087813,0.4493704009671648,0.7032124967615073,0.88835558803997,0.9867124733912886,0.9886743643738104,0.8940495977874416,0.7120823598447122,0.4605495930185245,0.1640243115310248,-0.14852501243367047,-0.4465644684041123,-0.7009776598061435,-0.8869101748289475,-0.9861976908132347,-0.9891405031314853,-0.8954511193434026,-0.7142823452219105,-0.4633331188388077,-0.16711944654490793,0.14542064154189963,0.44375413723165225,0.6987359183002837,0.8854560256532107,0.9856731942996854,0.9895968989673004,0.8968438208073135,0.7164752949989377,0.4661120808803767,0.1702129354511811,-0.14231483827328917,-0.4409394351312281,-0.6964872943247957,-0.883993154835964,-0.985138989016872,-0.9900435473858052,-0.8982276884612228,-0.7186611875755181,-0.4688864517707705,-0.1733047477793072,0.1392076332196493,0.43812038982733664,0.694231810028387,0.8825215767863192,0.98459508022666,0.9904804439875632,0.899602708674191,0.7208400014208419,0.4716562041827501,0.17639485307532915,-0.1360990569865977,-0.4352970290872748,-0.6919694876273221,-0.8810413059991534,-0.9840414732864815,-0.9909075844691926,-0.9009688679024149,-0.7230117150738399,-0.4744213108345682,-0.17948322090203797,0.13298914019325794,0.43246938072078567,0.6897003494052205,0.8795523570549659,0.983478173649306,0.9913249646234078,0.9023261526894006,0.7251763071433783,0.4771817444902179,0.18256982083936055,-0.1298779134719581,-0.4296374725799053,-0.6874244177128364,-0.8780547446197461,-0.9829051868635711,-0.9917325803390618,-0.903674549666037,-0.7273337563084709,-0.47993747795977987,-0.18565462248463727,0.12676540746792872,0.42680133255860797,0.6851417149678389,0.8765484834447852,0.9823225185731316,0.9921304276011831,0.9050140455507666,0.7294840413184877,0.4826884840995721,0.1887375954529215,-0.12365165283902345,-0.42396098859255155,-0.6828522636545916,-0.8750335883665958,-0.9817301745172043,-0.9925185024910269,-0.9063446271497066,-0.7316271409933499,-0.4854347358124958,-0.1918187093772789,0.12053668025532817,0.4211164686588021,0.6805560863239468,0.8735100743067227,0.9811281605303109,0.9928968011860967,0.9076662813567794,0.733763034223799,0.4881762060482828,0.1948979339090865,-0.11742052039899199,-0.4182678007755587,-0.6782532055929582,-0.8719779562716067,-0.9805164825422256,-0.9932653199601932,-0.9089789951538405,-0.7358916999715134,-0.49091286780376203,-0.1979752387183097,0.11430320396383638,0.4154150130018772,0.6759436441447565,0.8704372493524369,0.9798951465778981,0.9936240551834458,0.9102827556107986,0.7380131172693769,0.4936446941231253,0.20105059349391047,-0.11118476165509714,-0.41255813343741415,-0.6736274247282602,-0.868887968725002,-0.9792641587574173,-0.9939730033223582,-0.9115775498857795,-0.7401272652216693,-0.49637165809819284,-0.20412396794392718,0.10806522418903322,0.4096971902220689,0.671304570157968,0.8673301296495403,0.9786235252959509,0.9943121609398281,0.9128633652251971,0.742234123004273,0.49909373286867864,0.20719533179594798,-0.10494462229275738,-0.40683221153582827,-0.6689751033137342,-0.8657637474705903,-0.9779732525036703,-0.9946415246951916,-0.9141401889639159,-0.7443336698648776,-0.5018108916224547,-0.21026465479747436,0.10182298670384461,0.4039632255984075,0.6666390471405432,0.864188837616839,0.9773133467856706,0.9949610913442529,0.915408008525367,0.7464258851231844,0.5045231075958151,0.21333190671597888,-0.09870034817005174,-0.40109026066899317,-0.6642964246482838,-0.8626054156009698,-0.9766438146419576,-0.9952708577393169,-0.9166668114216711,-0.7485107481711102,-0.5072303540737015,-0.21639705733937772,0.09557673744901445,0.39821334504596406,0.6619472589115217,0.8610134970195331,0.9759646626673468,0.9955708208292194,0.9179165852537624,0.7505882384729903,0.5099326043901199,0.21946007647628463,-0.09245218530794436,-0.39533250706661316,-0.6595915730692735,-0.8594130975527011,-0.9752758975514083,-0.9958609776593583,-0.9191573177115103,-0.7526583355657805,-0.5126298319281722,-0.22252093395630818,0.08932672252332598,0.392447775106868,0.6572293903247778,0.8578042329642498,0.9745775260784005,0.9961413253717215,0.9203889965738408,0.75472101905923,0.515322010120473,0.2255795996303491,-0.08620037988061353,-0.3895591775810116,-0.6548607339453004,-0.856186919101313,-0.9738695551272032,-0.9964118612049159,-0.9216116097088566,-0.7567762686361985,-0.5180091124493722,-0.22863604337089707,0.0830731881739278,0.38666674294140213,0.6524856272617711,0.854561171894249,0.9731519916712501,0.9966725824941941,0.9228251450739569,0.7588240640526814,0.5206911124472162,0.23169023507232764,-0.07994517820575266,-0.38377049967819304,-0.650104093668755,-0.8529270073564835,-0.9724248427784598,-0.996923486671481,-0.9240295907159387,-0.7608643851381259,-0.5233679836966091,-0.23474214465119866,0.07681638078663186,0.3808704763190936,0.6477161566240883,0.8512844415843522,0.9716881156111666,0.9971645712653989,0.9252249347711833,0.7628972117956005,0.5260396998306723,0.23779174204654666,-0.0736868267348654,-0.3779667014289227,-0.6453218396486803,-0.8496334907569417,-0.9709418174260496,-0.9973958339012919,-0.92641116546567,-0.764922524001993,-0.5287062345333049,-0.24083899722018282,0.07055654687620605,0.3750592036095751,0.6429211663262817,0.8479741711359305,0.9701859555740613,0.9976172723012461,0.9275882711151608,0.7669403018082076,0.531367561539442,0.24388388015698906,-0.06742557204360021,-0.372148011499575,-0.6405141603032528,-0.8463064990654289,-0.9694205375003553,-0.9978288842841246,-0.9287562401252987,-0.7689505253393617,-0.5340236546353143,-0.24692636086521347,0.0642939330767061,0.36923315377383464,0.6381008452883301,0.8446304909718177,0.9686455707442129,0.9980306677655703,0.929915060991721,0.7709531747949812,0.5366744876587057,0.2499664093767659,-0.06116166082185717,-0.36631465914337236,-0.635681245052393,-0.8429461633635869,-0.96786106293898,-0.9982226207580387,-0.9310647223001737,-0.7729482304491959,-0.5393200344992116,-0.2530039957474698,0.058028786131580204,0.36339255635502954,0.6332553834282297,0.8412535328311724,0.9670670218119474,0.9984047413708145,0.932205212726623,0.7749356726509338,0.5419602690984952,0.25603909005753006,-0.05489533986433586,-0.36046687419118745,-0.6308232843103022,-0.8395526160467932,-0.9662634551843411,-0.9985770278100303,-0.9333365210373676,-0.7769154818241144,-0.5445951654505448,-0.2590716624115685,0.05176135288421477,0.35753764146948386,0.6283849716545113,0.8378434297642868,0.9654503709712016,0.9987394783786844,0.9344586360891488,0.7788876384678417,0.5472246976018927,0.262101682939091,-0.04862685606063354,-0.3546048870425292,-0.6259404694779603,-0.8361259908189689,-0.964627777181316,-0.9988920914766568,-0.9355715468292605,-0.7808521231565962,-0.5498488396520201,-0.2651291217947388,0.04549188026803067,0.3516686397976222,0.6234898018587186,0.8344003161273698,0.96379568191714,0.9990348656007261,0.936675242295658,0.7828089165404264,0.5524675657533876,0.26815394915858226,-0.04235645638556246,-0.34872892865646543,-0.6210329929355844,-0.8326664226872137,-0.9629540933747177,-0.9991677993445831,-0.9377697116170661,-0.7847579993451116,-0.5550808501118398,-0.2711761352364146,0.03922061529679882,0.3457857825748805,0.6185700669078826,0.8309243275771547,0.9621030198436008,0.9992908913988456,0.9388549440130859,0.7866993523724624,0.5576886669868222,0.27419565026004544,-0.03608438788941912,-0.34283923054252285,-0.6161010480350851,-0.8291740479566323,-0.9612424697067672,-0.9994041405510709,-0.9399309287943014,-0.7886329565003436,-0.5602909906916338,-0.277212464487594,0.032947805054907915,0.339889301582596,0.6136259606367831,0.8274156010657022,0.9603724514405382,0.9995075456857675,0.9409976553623693,0.7905587926829739,0.5628877955936812,0.280226548203782,-0.029810897688250668,-0.336936024751608,-0.6111448290923069,-0.8256490042248672,-0.9594929736144951,-0.9996011057844066,-0.9420551132101841,-0.792476841951085,-0.5654790561147303,-0.2832378717202264,0.026673696687629467,0.333979429138917,0.6086576778405213,0.8238742748349058,0.9586040448913948,0.9996848199254319,0.9431032919218906,0.7943870854121091,0.5680647467311586,0.2862464053757318,-0.023536232954118646,-0.3310195438666966,-0.6061645313795839,-0.8220914303767015,-0.9577056740270846,-0.9997586872842676,-0.9441421811730474,-0.7962895042503644,-0.5706448419742066,-0.28925211953658264,0.020398537391425064,0.3280563980894813,0.6036654142667051,0.8203004884110702,0.9567978698704157,0.9998227071333307,0.9451717707307128,0.798184079727241,0.5732193164302286,0.29225498459683513,-0.017260640905405175,-0.3250900209939213,-0.6011603511179051,-0.8185014665785871,-0.9558806413631561,-0.9998768788420318,-0.9461920504535466,-0.8000707931813853,-0.5757881447409429,-0.2952549709786086,0.014122574404028403,0.3221204417984948,0.5986493666077721,0.8166943825994136,0.9549539975399158,0.9999212018767856,0.9472030102919091,0.8019496260288834,0.5783513016036816,0.2982520491323346,-0.010984368796894167,-0.31914768975322033,-0.596132485469219,-0.8148792542731221,-0.9540179475280053,-0.9999556758010154,-0.9482046402879605,-0.8038205597634447,-0.5809087617716404,-0.3012461895372182,0.007846054994972068,0.31617179413936874,0.5936097324932398,0.8130560994785208,0.9530725005474241,0.9999803002751568,0.9491969305757587,0.8056835759565839,0.5834605000541262,0.3042373627012731,-0.0047076639102974095,-0.31319278426917446,-0.5910811325286653,-0.811224936173504,-0.9521176659107179,-0.9999950750566616,-0.950179871381357,-0.8075386562578029,-0.58600649131677,-0.30722553916178263,0.0015692264556667226,0.3102106894855472,0.5885467104819188,0.8093857823947705,0.9511534530228996,1.0],"sin":[-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]} diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/test/fixtures/julia/integers.json b/lib/node_modules/@stdlib/math/base/special/sincospif/test/fixtures/julia/integers.json new file mode 100644 index 000000000000..cba3917d562d --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/test/fixtures/julia/integers.json @@ -0,0 +1 @@ +{"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],"cos":[1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0],"sin":[-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,-0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]} diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/test/fixtures/julia/runner.jl b/lib/node_modules/@stdlib/math/base/special/sincospif/test/fixtures/julia/runner.jl new file mode 100755 index 000000000000..a24fc2b8f051 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/test/fixtures/julia/runner.jl @@ -0,0 +1,72 @@ +#!/usr/bin/env julia +# +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import JSON + +""" + gen( domain, name ) + +Generate fixture data and write to file. + +# Arguments + +* `domain`: domain +* `name::AbstractString`: output filename + +# Examples + +``` julia +julia> x = linspace( -1000, 1000, 2001 ); +julia> gen( x, \"data.json\" ); +``` +""" +function gen( domain, name ) + x = collect( domain ); + s = sinpi.( x ); + c = cospi.( x ); + + # Store data to be written to file as a collection: + data = Dict([ + ("x", x), + ("sin", s), + ("cos", c) + ]); + + # Based on the script directory, create an output filepath: + filepath = joinpath( dir, name ); + + # Write the data to the output filepath as JSON: + outfile = open( filepath, "w" ); + write( outfile, JSON.json(data) ); + write( outfile, "\n" ); + close( outfile ); +end + +# Get the filename: +file = @__FILE__; + +# Extract the directory in which this file resides: +dir = dirname( file ); + +# Generate fixture data for integer values: +x = range( -1000.0, stop = 1000.0, length = 2001 ); +gen( x, "integers.json" ); + +# Generate fixture data for decimal values: +x = range( -100.0, stop = 100.0, length = 2003 ) +gen( x, "decimals.json" ); diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/test/test.assign.js b/lib/node_modules/@stdlib/math/base/special/sincospif/test/test.assign.js new file mode 100644 index 000000000000..7a13d22ba2fe --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/test/test.assign.js @@ -0,0 +1,218 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var PINF = require( '@stdlib/constants/float32/pinf' ); +var NINF = require( '@stdlib/constants/float32/ninf' ); +var absf = require( '@stdlib/math/base/special/absf' ); +var powf = require( '@stdlib/math/base/special/powf' ); +var Float32Array = require( '@stdlib/array/float32' ); +var EPS = require( '@stdlib/constants/float32/eps' ); +var sincospif = require( './../lib/assign.js' ); + + +// 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 sincospif, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'if provided negative infinity, the function returns [NaN,NaN]', function test( t ) { + var out; + var y; + + out = new Float32Array( 2 ); + y = sincospif( NINF, out, 1, 0 ); + + t.strictEqual( y, out, 'returns output array' ); + t.strictEqual( isnanf( y[ 0 ] ), true, 'returns expected value' ); + t.strictEqual( isnanf( y[ 1 ] ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'if provided positive infinity, the function returns [NaN,NaN]', function test( t ) { + var out; + var y; + + out = new Float32Array( 2 ); + y = sincospif( PINF, out, 1, 0 ); + t.strictEqual( y, out, 'returns output array' ); + t.strictEqual( isnanf( y[ 0 ] ), true, 'returns expected value' ); + t.strictEqual( isnanf( y[ 1 ] ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'if provided NaN, the function returns [NaN,NaN]', function test( t ) { + var out; + var y; + + out = new Float32Array( 2 ); + y = sincospif( NaN, out, 1, 0 ); + + t.strictEqual( y, out, 1, 0 ); + t.strictEqual( isnanf( y[ 0 ] ), true, 'returns expected value' ); + t.strictEqual( isnanf( y[ 1 ] ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function computes sin(πx) and cos(πx) for integer input', function test( t ) { + var out; + var x; + var s; + var c; + var y; + var i; + + x = integers.x; + s = integers.sin; + c = integers.cos; + for ( i = 0; i < x.length; i++ ) { + out = new Float32Array( 2 ); + y = sincospif( x[ i ], out, 1, 0 ); + t.strictEqual( y, out, 'returns output array' ); + t.strictEqual( y[ 0 ], s[ i ], 'returns '+c[ i ] ); + t.strictEqual( y[ 1 ], c[ i ], 'returns '+c[ i ] ); + } + t.end(); +}); + +tape( 'if provided a value exceeding 2**53, the function returns [0,1]', function test( t ) { + var out; + var x; + var y; + var i; + + x = powf( 2.0, 53 ) + 1.0; + for ( i = 0; i < 100; i++ ) { + out = new Float32Array( 2 ); + y = sincospif( x + i, out, 1, 0 ); + t.strictEqual( y, out, 'returns output array' ); + t.strictEqual( y[ 0 ], 0.0, 'returns expected value' ); + t.strictEqual( y[ 1 ], 1.0, 'returns expected value' ); + } + t.end(); +}); + +tape( 'the function computes sin(πx) and cos(πx) for fractional part equal to 1/2', function test( t ) { + var out; + var x; + var y; + var i; + + for ( i = -100; i <= 100; i++ ) { + x = 0.5 + i; + out = new Float32Array( 2 ); + y = sincospif( x, out, 1, 0 ); + t.strictEqual( y, out, 'returns output array' ); + t.strictEqual( y[ 0 ], ( (i%2 === 0) ? 1.0 : -1.0 ), 'x: '+x+'. Expected: 0' ); + t.strictEqual( y[ 1 ], 0.0, 'x: '+x+'. Expected: 0' ); + } + t.end(); +}); + +tape( 'the function computes sin(πx) and cos(πx) for decimal input', function test( t ) { + var delta; + var out; + var x; + var y; + var i; + var s; + var c; + + x = decimals.x; + s = decimals.sin; + c = decimals.cos; + for ( i = 0; i < x.length; i++ ) { + out = new Float32Array( 2 ); + y = sincospif( x[ i ], out, 1, 0 ); + t.strictEqual( y, out, 'returns output array' ); + + if ( y[ 0 ] === s[ i ] ) { + t.strictEqual( y[ 0 ], s[ i ], 'x: '+x[ i ]+'. Expected: '+s[ i ] ); + } else { + delta = absf( y[ 0 ] - s[ i ] ); + t.ok(delta <= EPS, 'within tolerance. x: '+x[ i ]+'. Value: '+y[ 0 ]+'. Expected: '+s[ i ]+'. Tolerance: '+EPS+'.' ); + } + if ( y[ 1 ] === c[ i ] ) { + t.strictEqual( y[ 1 ], c[ i ], 'x: '+x[ i ]+'. Expected: '+c[ i ] ); + } else { + delta = absf( y[ 1 ] - c[ i ] ); + t.ok( delta <= EPS, 'within tolerance. x: '+x[ i ]+'. Value: '+y[ 1 ]+'. Expected: '+c[ i ]+'. Tolerance: '+EPS+'.' ); + } + } + t.end(); +}); + +tape( 'the function supports providing an output typed array', function test( t ) { + var parts; + var out; + + out = new Float32Array( 2 ); + parts = sincospif( NaN, out, 1, 0 ); + + t.strictEqual( parts, out, 'returns output array' ); + t.strictEqual( isnanf( parts[ 0 ] ), true, 'returns expected value' ); + t.strictEqual( isnanf( parts[ 1 ] ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a stride', function test( t ) { + var out; + var val; + + out = new Float32Array( 4 ); + val = sincospif( NaN, out, 2, 0 ); + + t.strictEqual( val, out ); + t.strictEqual( isnanf( out[ 0 ] ), true, 'returns expected value' ); + t.strictEqual( val[ 1 ], 0, 'returns expected value' ); + t.strictEqual( isnanf( out[ 2 ] ), true, 'returns expected value' ); + t.strictEqual( val[ 3 ], 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying an offset', function test( t ) { + var out; + var val; + + out = new Float32Array( 4 ); + val = sincospif( NaN, out, 2, 1 ); + + t.strictEqual( val, out, 'returns output array' ); + t.strictEqual( val[ 0 ], 0, 'returns expected value' ); + t.strictEqual( isnanf( val[ 1 ] ), true, 'returns expected value' ); + t.strictEqual( val[ 2 ], 0, 'returns expected value' ); + t.strictEqual( isnanf( val[ 3 ] ), true, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/test/test.js b/lib/node_modules/@stdlib/math/base/special/sincospif/test/test.js new file mode 100644 index 000000000000..5a0ae3cbab45 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/test/test.js @@ -0,0 +1,40 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var hasOwnProp = require( '@stdlib/assert/has-own-property' ); +var sincospif = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sincospif, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is an `assign` method', function test( t ) { + t.strictEqual( hasOwnProp( sincospif, 'assign' ), true, 'has property' ); + t.strictEqual( typeof sincospif.assign, 'function', 'has method' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/test/test.main.js b/lib/node_modules/@stdlib/math/base/special/sincospif/test/test.main.js new file mode 100644 index 000000000000..bd8e6dd58789 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/test/test.main.js @@ -0,0 +1,142 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var PINF = require( '@stdlib/constants/float32/pinf' ); +var NINF = require( '@stdlib/constants/float32/ninf' ); +var absf = require( '@stdlib/math/base/special/absf' ); +var powf = require( '@stdlib/math/base/special/powf' ); +var EPS = require( '@stdlib/constants/float32/eps' ); +var sincospif = require( './../lib/main.js' ); + + +// 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 sincospif, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'if provided negative infinity, the function returns `[NaN,NaN]`', function test( t ) { + var y = sincospif( NINF ); + t.strictEqual( isnanf( y[ 0 ] ), true, 'returns expected value' ); + t.strictEqual( isnanf( y[ 1 ] ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'if provided positive infinity, the function returns `[NaN,NaN]`', function test( t ) { + var y = sincospif( PINF ); + t.strictEqual( isnanf( y[ 0 ] ), true, 'returns expected value' ); + t.strictEqual( isnanf( y[ 1 ] ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'if provided `NaN`, the function returns `[NaN,NaN]`', function test( t ) { + var y = sincospif( NaN ); + t.strictEqual( isnanf( y[ 0 ] ), true, 'returns expected value' ); + t.strictEqual( isnanf( y[ 1 ] ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function computes sin(πx) and cos(πx) for integer input', function test( t ) { + var x; + var s; + var c; + var y; + var i; + + x = integers.x; + s = integers.sin; + c = integers.cos; + for ( i = 0; i < x.length; i++ ) { + y = sincospif( x[ i ] ); + t.strictEqual( y[ 0 ], s[ i ], 'returns '+s[ i ] ); + t.strictEqual( y[ 1 ], c[ i ], 'returns '+c[ i ] ); + } + t.end(); +}); + +tape( 'if provided a value exceeding 2**53, the function returns [0,1]', function test( t ) { + var x; + var y; + var i; + + x = powf( 2.0, 53 ) + 1.0; + for ( i = 0; i < 100; i++ ) { + y = sincospif( x+i ); + t.strictEqual( y[ 0 ], 0.0, 'returns expected value' ); + t.strictEqual( y[ 1 ], 1.0, 'returns expected value' ); + } + t.end(); +}); + +tape( 'the function computes the sin(πx) and cos(πx) for fractional part equal to 1/2', function test( t ) { + var x; + var y; + var i; + + for ( i = -100; i <= 100; i++ ) { + x = 0.5 + i; + y = sincospif( x ); + t.strictEqual( y[ 0 ], ( (i%2 === 0) ? 1.0 : -1.0 ), 'x: '+x+'. Expected: 0' ); + t.strictEqual( y[ 1 ], 0.0, 'x: '+x+'. Expected: 0' ); + } + t.end(); +}); + +tape( 'the function computes the sin(πx) and cos(πx) for decimal input', function test( t ) { + var delta; + var x; + var y; + var i; + var s; + var c; + + x = decimals.x; + s = decimals.sin; + c = decimals.cos; + for ( i = 0; i < x.length; i++ ) { + y = sincospif( x[ i ] ); + + if ( y[ 0 ] === s[ i ] ) { + t.strictEqual( y[ 0 ], s[ i ], 'x: '+x[ i ]+'. Expected: '+s[ i ] ); + } else { + delta = absf( y[ 0 ] - s[ i ] ); + t.ok( delta <= EPS, 'within tolerance. x: '+x[ i ]+'. Value: '+y[ 0 ]+'. Expected: '+s[ i ]+'. Tolerance: '+EPS+'.' ); + } + if ( y[ 1 ] === c[ i ] ) { + t.strictEqual( y[ 1 ], c[ i ], 'x: '+x[ i ]+'. Expected: '+c[ i ] ); + } else { + delta = absf( y[ 1 ] - c[ i ] ); + t.ok( delta <= EPS, 'within tolerance. x: '+x[ i ]+'. Value: '+y[ 1 ]+'. Expected: '+c[ i ]+'. Tolerance: '+EPS+'.' ); + } + } + t.end(); +}); diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/test/test.native.js b/lib/node_modules/@stdlib/math/base/special/sincospif/test/test.native.js new file mode 100644 index 000000000000..bbeb911e08be --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/test/test.native.js @@ -0,0 +1,157 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var PINF = require( '@stdlib/constants/float32/pinf' ); +var NINF = require( '@stdlib/constants/float32/ninf' ); +var absf = require( '@stdlib/math/base/special/absf' ); +var powf = require( '@stdlib/math/base/special/powf' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var float64ToFloat32 = require( '@stdlib/number/float64/base/to-float32' ); +var max = require( '@stdlib/math/base/special/max' ); +var EPS = require( '@stdlib/constants/float32/eps' ); + + +// VARIABLES // + +var sincospif = tryRequire( resolve( __dirname, './../lib/native.js' ) ); +var opts = { + 'skip': ( sincospif 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 sincospif, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'if provided negative infinity, the function returns `[NaN,NaN]`', opts, function test( t ) { + var y = sincospif( NINF ); + t.strictEqual( isnanf( y[ 0 ] ), true, 'returns expected value' ); + t.strictEqual( isnanf( y[ 1 ] ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'if provided positive infinity, the function returns `[NaN,NaN]`', opts, function test( t ) { + var y = sincospif( PINF ); + t.strictEqual( isnanf( y[ 0 ] ), true, 'returns expected value' ); + t.strictEqual( isnanf( y[ 1 ] ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'if provided `NaN`, the function returns [NaN,NaN]', opts, function test( t ) { + var y = sincospif( NaN ); + t.strictEqual( isnanf( y[ 0 ] ), true, 'returns expected value' ); + t.strictEqual( isnanf( y[ 1 ] ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function computes sin(πx) and cos(πx) for integer input', opts, function test( t ) { + var x; + var s; + var c; + var y; + var i; + + x = integers.x; + s = integers.sin; + c = integers.cos; + for ( i = 0; i < x.length; i++ ) { + y = sincospif( x[ i ] ); + t.strictEqual( y[ 0 ], s[ i ], 'returns '+s[ i ] ); + t.strictEqual( y[ 1 ], c[ i ], 'returns '+s[ i ] ); + } + t.end(); +}); + +tape( 'if provided a value exceeding 2**53, the function returns [0,1]', opts, function test( t ) { + var x; + var y; + var i; + + x = powf( 2.0, 53 ) + 1.0; + for ( i = 0; i < 100; i++ ) { + y = sincospif( x+i ); + t.strictEqual( y[ 0 ], 0.0, 'returns expected value' ); + t.strictEqual( y[ 1 ], 1.0, 'returns expected value' ); + } + t.end(); +}); + +tape( 'the function computes the sin(πx) and cos(πx) for fractional part equal to 1/2', opts, function test( t ) { + var x; + var y; + var i; + + for ( i = -100; i <= 100; i++ ) { + x = 0.5 + i; + y = sincospif( x ); + t.strictEqual( y[ 0 ], ( (i%2 === 0) ? 1.0 : -1.0 ), 'x: '+x+'. Expected: 0' ); + t.strictEqual( y[ 1 ], 0.0, 'x: '+x+'. Expected: 0' ); + } + t.end(); +}); + +tape( 'the function computes sin(πx) and cos(πx) for decimal input', opts, function test( t ) { + var delta; + var tol; + var x; + var y; + var i; + var s; + var c; + + x = decimals.x; + s = decimals.sin; + c = decimals.cos; + for ( i = 0; i < x.length; i++ ) { + y = sincospif( x[ i ] ); + + if ( y[ 0 ] === float64ToFloat32( s[ i ] ) ) { + t.strictEqual( y[ 0 ], float64ToFloat32( s[ i ] ), 'x: '+x[ i ]+'. Expected: '+s[ i ] ); + } else { + delta = absf( y[ 0 ] - float64ToFloat32( s[ i ] ) ); + tol = max( 50.0 * EPS * max( absf( y[ 0 ] ), 1.0 ), 2.0e-5 ); + t.ok( delta <= tol, 'within tolerance. x: '+x[ i ]+'. Value: '+y[ 0 ]+'. Expected: '+s[ i ]+'. Tolerance: '+tol+'.'); + } + + if ( y[ 1 ] === float64ToFloat32( c[ i ] ) ) { + t.strictEqual( y[ 1 ], float64ToFloat32( c[ i ] ), 'x: '+x[ i ]+'. Expected: '+c[ i ] ); + } else { + delta = absf( y[ 1 ] - float64ToFloat32( c[ i ] ) ); + tol = max( 50.0 * EPS * max( absf( y[ 1 ] ), 1.0 ), 2.0e-5 ); + t.ok( delta <= tol, 'within tolerance. x: '+x[ i ]+'. Value: '+y[ 1 ]+'. Expected: '+c[ i ]+'. Tolerance: '+tol+'.'); + } + } + t.end(); +}); From 3c4a538ed5fb5d1b121855eb396f6cce37130dd7 Mon Sep 17 00:00:00 2001 From: ivishal-g Date: Wed, 11 Feb 2026 18:10:02 +0530 Subject: [PATCH 02/10] fix: remove duplicate benchmark.c file in wrong location --- 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: na - task: lint_package_json status: na - task: lint_repl_help status: na - task: lint_javascript_src status: na - task: lint_javascript_cli status: na - task: lint_javascript_examples status: na - task: lint_javascript_tests status: na - task: lint_javascript_benchmarks status: na - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - task: lint_c_tests_fixtures status: na - task: lint_shell status: na - task: lint_typescript_declarations status: passed - task: lint_typescript_tests status: na - task: lint_license_headers status: passed --- --- .../special/sincospif/benchmark/c/benchmark.c | 135 ------------------ 1 file changed, 135 deletions(-) delete mode 100644 lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/c/benchmark.c diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/c/benchmark.c b/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/c/benchmark.c deleted file mode 100644 index d85f798a1fe8..000000000000 --- a/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/c/benchmark.c +++ /dev/null @@ -1,135 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2026 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -#include "stdlib/math/base/special/sincospif.h" -#include -#include -#include -#include - -#define NAME "sincospif" -#define ITERATIONS 1000000 -#define REPEATS 3 - -/** -* Prints the TAP version. -*/ -static void print_version( void ) { - printf( "TAP version 13\n" ); -} - -/** -* Prints the TAP summary. -* -* @param total total number of tests -* @param passing total number of passing tests -*/ -static void print_summary( int total, int passing ) { - printf( "#\n" ); - printf( "1..%d\n", total ); // TAP plan - printf( "# total %d\n", total ); - printf( "# pass %d\n", passing ); - printf( "#\n" ); - printf( "# ok\n" ); -} - -/** -* Prints benchmarks results. -* -* @param elapsed elapsed time in seconds -*/ -static void print_results( double elapsed ) { - double rate = (double)ITERATIONS / elapsed; - printf( " ---\n" ); - printf( " iterations: %d\n", ITERATIONS ); - printf( " elapsed: %0.9f\n", elapsed ); - printf( " rate: %0.9f\n", rate ); - printf( " ...\n" ); -} - -/** -* Returns a clock time. -* -* @return clock time -*/ -static double tic( void ) { - struct timeval now; - gettimeofday( &now, NULL ); - return (double)now.tv_sec + (double)now.tv_usec/1.0e6; -} - -/** -* Generates a random number on the interval [0,1). -* -* @return random number -*/ -static float rand_float( void ) { - return (float)( ( 20.0 * rand() ) / ( (double)RAND_MAX + 1.0 ) - 10.0 ); -} - -/** -* Runs a benchmark. -* -* @return elapsed time in seconds -*/ -static double benchmark( void ) { - float x[ 100 ]; - double elapsed; - float sine; - float cosine; - double t; - int i; - - for ( i = 0; i < 100; i++ ) { - x[ i ] = rand_float(); - } - - t = tic(); - for ( i = 0; i < ITERATIONS; i++ ) { - stdlib_base_sincospif( x[ i%100 ], &sine, &cosine ); - if ( sine != sine || cosine != cosine ) { - printf( "should not return NaN\n" ); - break; - } - } - elapsed = tic() - t; - if ( sine != sine || cosine != cosine ) { - printf( "should not return NaN\n" ); - } - return elapsed; -} - -/** -* Main execution sequence. -*/ -int main( void ) { - double elapsed; - int i; - - // Use the current time to seed the random number generator: - srand( time( NULL ) ); - - print_version(); - for ( i = 0; i < REPEATS; i++ ) { - printf( "# c::%s\n", NAME ); - elapsed = benchmark(); - print_results( elapsed ); - printf( "ok %d benchmark finished\n", i+1 ); - } - print_summary( REPEATS, REPEATS ); -} From b0596be7ebe4a30ed8ce111f37d7cfd13a0601dc Mon Sep 17 00:00:00 2001 From: Vishal Gaikwad <154438441+ivishal-g@users.noreply.github.com> Date: Wed, 11 Feb 2026 18:44:50 +0530 Subject: [PATCH 03/10] bench: refactor to use string interpolation in bechmark Signed-off-by: Vishal Gaikwad <154438441+ivishal-g@users.noreply.github.com> --- .../sincospif/benchmark/benchmark.native.js | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/benchmark.native.js index 189e4ed7dd3f..3c19b51b8e2a 100644 --- a/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/benchmark.native.js +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/benchmark.native.js @@ -22,18 +22,18 @@ var resolve = require( 'path' ).resolve; var bench = require( '@stdlib/bench' ); +var tryRequire = require( '@stdlib/utils/try-require' ); var uniform = require( '@stdlib/random/array/uniform' ); var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); -var tryRequire = require( '@stdlib/utils/try-require' ); var format = require( '@stdlib/string/format' ); var pkg = require( './../package.json' ).name; // VARIABLES // -var sincospif = tryRequire( resolve( __dirname, './../lib/native.js' ) ); +var acschf = tryRequire( resolve( __dirname, './../lib/native.js' ) ); var opts = { - 'skip': ( sincospif instanceof Error ) + 'skip': ( acschf instanceof Error ) }; @@ -44,19 +44,21 @@ bench( format( '%s::native', pkg ), opts, function benchmark( b ) { var y; var i; - x = uniform( 100, -10.0, 10.0, { + // Generate input data once (valid domain: |x| >= 1) + x = uniform( 100, 1.0, 50.0, { 'dtype': 'float32' }); b.tic(); for ( i = 0; i < b.iterations; i++ ) { - y = sincospif( x[ i%x.length ] ); - if ( isnanf( y[ 0 ] ) || isnanf( y[ 1 ] ) ) { + y = acschf( x[ i % x.length ] ); + if ( isnanf( y ) ) { b.fail( 'should not return NaN' ); } } b.toc(); - if ( isnanf( y[ 0 ] ) || isnanf( y[ 1 ] ) ) { + + if ( isnanf( y ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); From 5d9288f95351b5f750c68f7a8592a918731cfd6c Mon Sep 17 00:00:00 2001 From: ivishal-g Date: Wed, 11 Feb 2026 18:55:18 +0530 Subject: [PATCH 04/10] bench: refactor to use string interpolation in bechmark --- 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: na - task: lint_package_json status: na - task: lint_repl_help status: na - task: lint_javascript_src status: na - task: lint_javascript_cli status: na - task: lint_javascript_examples status: na - task: lint_javascript_tests status: na - task: lint_javascript_benchmarks status: passed - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - task: lint_c_tests_fixtures status: na - task: lint_shell status: na - task: lint_typescript_declarations status: passed - task: lint_typescript_tests status: na - task: lint_license_headers status: passed --- --- .../sincospif/benchmark/benchmark.native.js | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/benchmark.native.js index 3c19b51b8e2a..189e4ed7dd3f 100644 --- a/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/benchmark.native.js +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/benchmark.native.js @@ -22,18 +22,18 @@ var resolve = require( 'path' ).resolve; var bench = require( '@stdlib/bench' ); -var tryRequire = require( '@stdlib/utils/try-require' ); var uniform = require( '@stdlib/random/array/uniform' ); var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var tryRequire = require( '@stdlib/utils/try-require' ); var format = require( '@stdlib/string/format' ); var pkg = require( './../package.json' ).name; // VARIABLES // -var acschf = tryRequire( resolve( __dirname, './../lib/native.js' ) ); +var sincospif = tryRequire( resolve( __dirname, './../lib/native.js' ) ); var opts = { - 'skip': ( acschf instanceof Error ) + 'skip': ( sincospif instanceof Error ) }; @@ -44,21 +44,19 @@ bench( format( '%s::native', pkg ), opts, function benchmark( b ) { var y; var i; - // Generate input data once (valid domain: |x| >= 1) - x = uniform( 100, 1.0, 50.0, { + x = uniform( 100, -10.0, 10.0, { 'dtype': 'float32' }); b.tic(); for ( i = 0; i < b.iterations; i++ ) { - y = acschf( x[ i % x.length ] ); - if ( isnanf( y ) ) { + y = sincospif( x[ i%x.length ] ); + if ( isnanf( y[ 0 ] ) || isnanf( y[ 1 ] ) ) { b.fail( 'should not return NaN' ); } } b.toc(); - - if ( isnanf( y ) ) { + if ( isnanf( y[ 0 ] ) || isnanf( y[ 1 ] ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); From 0520c5cad147bf099c080ed98325c9c7eadee6ab Mon Sep 17 00:00:00 2001 From: Vishal Gaikwad Date: Mon, 2 Mar 2026 18:14:35 +0530 Subject: [PATCH 05/10] chore: changes according to code review --- .../special/sincospif/benchmark/benchmark.js | 4 +++- .../math/base/special/sincospif/docs/repl.txt | 2 +- .../special/sincospif/docs/types/index.d.ts | 18 ++++++++---------- .../base/special/sincospif/docs/types/test.ts | 15 ++++++++------- .../base/special/sincospif/test/test.assign.js | 6 +++--- 5 files changed, 23 insertions(+), 22 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/benchmark.js b/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/benchmark.js index 71c5e4734d2d..ba18001b1615 100644 --- a/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/benchmark.js @@ -139,7 +139,9 @@ bench( format( '%s::built-in', pkg ), function benchmark( b ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { y = [ - Math.sin( PIF * x[ i % x.length ] ) ]; // eslint-disable-line stdlib/no-builtin-math + Math.sin( PIF * x[ i % x.length ] ), // eslint-disable-line stdlib/no-builtin-math + Math.cos( PIF * x[ i % x.length ] ) // eslint-disable-line stdlib/no-builtin-math + ]; if ( isnanf( y[ 0 ] ) || isnanf( y[ 1 ] ) ) { b.fail( 'should not return NaN' ); } diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/docs/repl.txt b/lib/node_modules/@stdlib/math/base/special/sincospif/docs/repl.txt index de953061fcac..e72f587ec588 100644 --- a/lib/node_modules/@stdlib/math/base/special/sincospif/docs/repl.txt +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/docs/repl.txt @@ -46,7 +46,7 @@ Returns ------- - y: TypedArray + y: Array|TypedArray|Object Two-element array containing sin(πx) and cos(πx). Examples diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/docs/types/index.d.ts b/lib/node_modules/@stdlib/math/base/special/sincospif/docs/types/index.d.ts index 529ee7888dd9..88c5223653c3 100644 --- a/lib/node_modules/@stdlib/math/base/special/sincospif/docs/types/index.d.ts +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/docs/types/index.d.ts @@ -20,17 +20,15 @@ /// +import { NumericArray } from '@stdlib/types/array'; -/** -* Interface describing `sincospif`. -*/ -interface SinCosPif { +interface sincospif { /** * Simultaneously computes the sine and cosine of a number times π using * single-precision floating-point arithmetic. * * @param x - input value - * @returns two-element array containing sin(πx) and cos(πx) + * @returns {Float32Array} two-element array containing sin(πx) and cos(πx) * * @example * var v = sincospif( 0.0 ); @@ -48,7 +46,7 @@ interface SinCosPif { * var v = sincospif( NaN ); * // returns [ NaN, NaN ] */ - ( x: number ): Array; + ( x: number ): Float32Array; /** * Simultaneously computes the sine and cosine of a number times π using @@ -59,7 +57,7 @@ interface SinCosPif { * @param out - output array * @param stride - output array stride * @param offset - output array index offset - * @returns two-element array containing sin(πx) and cos(πx) + * @returns {Float32Array} two-element array containing sin(πx) and cos(πx) * * @example * var Float32Array = require( '@stdlib/array/float32' ); @@ -72,7 +70,7 @@ interface SinCosPif { * var bool = ( v === out ); * // returns true */ - assign>( x: number, out: T, stride: number, offset: number ): T; + assign( x: number, out: T, stride: number, offset: number ): T; } /** @@ -80,7 +78,7 @@ interface SinCosPif { * single-precision floating-point arithmetic. * * @param x - input value -* @returns two-element array containing sin(πx) and cos(πx) +* @returns {Float32Array} two-element array containing sin(πx) and cos(πx) * * @example * var v = sincospif( 0.0 ); @@ -98,7 +96,7 @@ interface SinCosPif { * var v = sincospif( NaN ); * // returns [ NaN, NaN ] */ -declare var sincospif: SinCosPif; +declare var sincospif: sincospif; // EXPORTS // diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/docs/types/test.ts b/lib/node_modules/@stdlib/math/base/special/sincospif/docs/types/test.ts index 9bd91e25be2b..44da742e69ce 100644 --- a/lib/node_modules/@stdlib/math/base/special/sincospif/docs/types/test.ts +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/docs/types/test.ts @@ -23,12 +23,12 @@ import sincospif = require( './index' ); // TESTS // -// The function returns a numeric array... +// The function returns a Float32Array... { - sincospif( 1.0 ); // $ExpectType number[] + sincospif( 1.0 ); // $ExpectType Float32Array } -// The compiler throws an error if the function is provided an argument other than a number... +// unsupported number of arguments { sincospif( true ); // $ExpectError sincospif( false ); // $ExpectError @@ -46,11 +46,11 @@ import sincospif = require( './index' ); sincospif( 1.0, 1.0 ); // $ExpectError } -// Attached to the main export is an `assign` method which returns an array-like object containing numbers... +// Attached to the main export is an `assign` method which returns a Float32Array... { - const out = [ 0.0, 0.0 ]; + const out = new Float32Array( 2 ); - sincospif.assign( 3.14e-319, out, 1, 0 ); // $ExpectType number[] + sincospif.assign( 3.14e-319, out, 1, 0 ); // $ExpectType Float32Array } // The compiler throws an error if the `assign` method is provided a first argument which is not a number... @@ -72,7 +72,8 @@ import sincospif = require( './index' ); sincospif.assign( 1.0, true, 1, 0 ); // $ExpectError sincospif.assign( 1.0, false, 1, 0 ); // $ExpectError sincospif.assign( 1.0, null, 1, 0 ); // $ExpectError - sincospif.assign( 1.0, {}, 1, 0 ); // $ExpectError + const obj: { a: number } = { a: 1 }; + sincospif.assign( 1.0, obj, 1, 0 ); // $ExpectError } // The compiler throws an error if the `assign` method is provided a third argument which is not a number... diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/test/test.assign.js b/lib/node_modules/@stdlib/math/base/special/sincospif/test/test.assign.js index 7a13d22ba2fe..faad56d0478a 100644 --- a/lib/node_modules/@stdlib/math/base/special/sincospif/test/test.assign.js +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/test/test.assign.js @@ -77,7 +77,7 @@ tape( 'if provided NaN, the function returns [NaN,NaN]', function test( t ) { out = new Float32Array( 2 ); y = sincospif( NaN, out, 1, 0 ); - t.strictEqual( y, out, 1, 0 ); + t.strictEqual( y, out, 'returns output array' ); t.strictEqual( isnanf( y[ 0 ] ), true, 'returns expected value' ); t.strictEqual( isnanf( y[ 1 ] ), true, 'returns expected value' ); t.end(); @@ -98,8 +98,8 @@ tape( 'the function computes sin(πx) and cos(πx) for integer input', function out = new Float32Array( 2 ); y = sincospif( x[ i ], out, 1, 0 ); t.strictEqual( y, out, 'returns output array' ); - t.strictEqual( y[ 0 ], s[ i ], 'returns '+c[ i ] ); - t.strictEqual( y[ 1 ], c[ i ], 'returns '+c[ i ] ); + t.strictEqual( y[ 0 ], s[ i ], 'returns expected value' ); + t.strictEqual( y[ 1 ], c[ i ], 'returns expected value' ); } t.end(); }); From a21a1ea9ad4bfa7356ae1b3c212e25e19769d90b Mon Sep 17 00:00:00 2001 From: Vishal Gaikwad Date: Mon, 2 Mar 2026 18:24:21 +0530 Subject: [PATCH 06/10] docs: improve README --- .../math/base/special/sincospif/README.md | 30 ++++--------------- 1 file changed, 5 insertions(+), 25 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/README.md b/lib/node_modules/@stdlib/math/base/special/sincospif/README.md index 6aa0918d0ed8..8f650a585107 100644 --- a/lib/node_modules/@stdlib/math/base/special/sincospif/README.md +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/README.md @@ -20,7 +20,7 @@ limitations under the License. # sincospif -> Simultaneously compute the [sinef][@stdlib/math/base/special/sinf] and [cosinef][@stdlib/math/base/special/cosf] of a single-precision floating-point number times [π][@stdlib/constants/float32/pi]. +> Simultaneously compute the [sinf][@stdlib/math/base/special/sinf] and [cosf][@stdlib/math/base/special/cosf] of a single-precision floating-point number times [π][@stdlib/constants/float32/pi].
@@ -32,7 +32,7 @@ var sincospif = require( '@stdlib/math/base/special/sincospif' ); #### sincospif( x ) -Simultaneously computes the [sinef][@stdlib/math/base/special/sinf] and [cosinef][@stdlib/math/base/special/cosf] of a single-precision floating-point number times [π][@stdlib/constants/float32/pi] more accurately than `sincos(pi*x)` when operating on single-precision floating-point values, especially for large `x`. +Simultaneously computes sin(πx) and cos(πx) using single-precision floating-point arithmetic. This function is more accurate than computing `sinf(πx)` and `cosf(πx)` separately, especially for large values of `x`. ```javascript var v = sincospif( 0.0 ); @@ -48,9 +48,9 @@ v = sincospif( NaN ); // returns [ NaN, NaN ] ``` -#### sincospif( x, out, stride, offset ) +#### sincospif.assign( x, out, stride, offset ) -Simultaneously computes the [sinef][@stdlib/math/base/special/sinf] and [cosinef][@stdlib/math/base/special/cosf] of a single-precision floating-point number times [π][@stdlib/constants/float32/pi] more accurately than `sincos(pi*x)`, especially for large `x`, and assigns results to a provided output array. +Simultaneously computes the [sinf][@stdlib/math/base/special/sinf] and [cosf][@stdlib/math/base/special/cosf] of a single-precision floating-point number times [π][@stdlib/constants/float32/pi] more accurately than `sincos(pi*x)`, especially for large `x`, and assigns results to a provided output array. @@ -120,7 +120,7 @@ for ( i = 0; i < x.length; i++ ) { #### stdlib_base_sincospif( x, &sine, &cosine ) -Simultaneously computes the [sinef][@stdlib/math/base/special/sinf] and [cosinef][@stdlib/math/base/special/cosf] of a single-precision floating-point number times [π][@stdlib/constants/float32/pi] more accurately than `sincos(pi*x)`, especially for large `x`. +Simultaneously computes the [sinf][@stdlib/math/base/special/sinf] and [cosf][@stdlib/math/base/special/cosf] of a single-precision floating-point number times [π][@stdlib/constants/float32/pi] more accurately than `sincos(pi*x)`, especially for large `x`. ```c float cosine; @@ -186,14 +186,6 @@ int main( void ) { @@ -202,20 +194,8 @@ int main( void ) { From f9c8a9c06cb7a823799dcdf04705f927cc5187d6 Mon Sep 17 00:00:00 2001 From: Vishal Gaikwad Date: Mon, 2 Mar 2026 18:31:07 +0530 Subject: [PATCH 07/10] docs: improed README --- .../math/base/special/sincospif/README.md | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/README.md b/lib/node_modules/@stdlib/math/base/special/sincospif/README.md index 8f650a585107..ec9d924d44e2 100644 --- a/lib/node_modules/@stdlib/math/base/special/sincospif/README.md +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/README.md @@ -186,6 +186,14 @@ int main( void ) { @@ -194,8 +202,20 @@ int main( void ) { From 873c3a713a1642fc2f86caf5e6f2b6bc224de79e Mon Sep 17 00:00:00 2001 From: Vishal Gaikwad Date: Mon, 2 Mar 2026 18:40:30 +0530 Subject: [PATCH 08/10] docs: improved README --- .../@stdlib/math/base/special/sincospif/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/README.md b/lib/node_modules/@stdlib/math/base/special/sincospif/README.md index ec9d924d44e2..8d5da2815869 100644 --- a/lib/node_modules/@stdlib/math/base/special/sincospif/README.md +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/README.md @@ -120,13 +120,13 @@ for ( i = 0; i < x.length; i++ ) { #### stdlib_base_sincospif( x, &sine, &cosine ) -Simultaneously computes the [sinf][@stdlib/math/base/special/sinf] and [cosf][@stdlib/math/base/special/cosf] of a single-precision floating-point number times [π][@stdlib/constants/float32/pi] more accurately than `sincos(pi*x)`, especially for large `x`. +Simultaneously computes sin(πx) and cos(πx) using single-precision floating-point arithmetic and assigns the results to a provided output pointers. ```c float cosine; float sine; -stdlib_base_sincospif( 4.0, &sine, &cosine ); +stdlib_base_sincospif( 4.0f, &sine, &cosine ); ``` The function accepts the following arguments: From 9c175bea8b89cfac804590457f561b7a44e97ec0 Mon Sep 17 00:00:00 2001 From: Vishal Gaikwad Date: Mon, 9 Mar 2026 22:59:25 +0530 Subject: [PATCH 09/10] fix: resolve undefined return and precision issues --- .../special/sincospif/benchmark/julia/REQUIRE | 2 - .../sincospif/benchmark/julia/benchmark.jl | 163 ------------------ .../sincospif/benchmark/python/benchmark.py | 105 ----------- .../special/sincospif/docs/types/index.d.ts | 19 +- .../base/special/sincospif/docs/types/test.ts | 9 +- .../math/base/special/sincospif/lib/assign.js | 4 +- .../test/fixtures/julia/decimals.json | 2 +- .../sincospif/test/fixtures/julia/runner.jl | 2 +- .../special/sincospif/test/test.assign.js | 30 ++-- .../base/special/sincospif/test/test.main.js | 23 +-- .../special/sincospif/test/test.native.js | 34 ++-- 11 files changed, 58 insertions(+), 335 deletions(-) delete mode 100644 lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/julia/REQUIRE delete mode 100755 lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/julia/benchmark.jl delete mode 100644 lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/python/benchmark.py diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/julia/REQUIRE b/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/julia/REQUIRE deleted file mode 100644 index 98645e192e41..000000000000 --- a/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/julia/REQUIRE +++ /dev/null @@ -1,2 +0,0 @@ -julia 1.5 -BenchmarkTools 0.5.0 diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/julia/benchmark.jl b/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/julia/benchmark.jl deleted file mode 100755 index 58c36cf58ba3..000000000000 --- a/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/julia/benchmark.jl +++ /dev/null @@ -1,163 +0,0 @@ -#!/usr/bin/env julia -# -# @license Apache-2.0 -# -# Copyright (c) 2026 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import BenchmarkTools -using Printf - -# Benchmark variables: -name = "sincospif"; -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 - -""" - sincospif( x ) - -Compute the sine and cosine of a number (since sincospif is not directly exposed in julia). - -# Arguments - -* `x`: input value - -# Examples - -``` julia -julia> sincospif( 0.0 ) -``` -""" -function sincospif( x ) - Float32[ sinpi( Float64(x) ), cospi( Float64(x) ) ]; -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 $sincospif( Float32( (20.0*rand()) - 10.0 ) ) 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/sincospif/benchmark/python/benchmark.py b/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/python/benchmark.py deleted file mode 100644 index af06f07e142a..000000000000 --- a/lib/node_modules/@stdlib/math/base/special/sincospif/benchmark/python/benchmark.py +++ /dev/null @@ -1,105 +0,0 @@ -#!/usr/bin/env python -# -# @license Apache-2.0 -# -# Copyright (c) 2026 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Benchmark sincospif.""" - -from __future__ import print_function -import timeit - -NAME = "sincospif" -REPEATS = 3 -ITERATIONS = 1000000 - - -def print_version(): - """Print the TAP version.""" - print("TAP version 13") - - -def print_summary(total, passing): - """Print the benchmark summary. - - # Arguments - - * `total`: total number of tests - * `passing`: number of passing tests - - """ - print("#") - print("1.." + str(total)) # TAP plan - print("# total " + str(total)) - print("# pass " + str(passing)) - print("#") - print("# ok") - - -def print_results(elapsed): - """Print benchmark results. - - # Arguments - - * `elapsed`: elapsed time (in seconds) - - # Examples - - ``` python - python> print_results(0.131009101868) - ``` - """ - rate = ITERATIONS / elapsed - - print(" ---") - print(" iterations: " + str(ITERATIONS)) - print(" elapsed: " + str(elapsed)) - print(" rate: " + str(rate)) - print(" ...") - - -def benchmark(): - """Run the benchmark and print benchmark results.""" - setup = ( - "import numpy as np;" - "from math import pi;" - "from random import random;" - ) - stmt = ( - "x = np.float32(20.0*random() - 10.0);" - "y = np.float32(np.sin(np.float64(pi) * np.float64(x)));" - "z = np.float32(np.cos(np.float64(pi) * np.float64(x)))" - ) - - t = timeit.Timer(stmt, setup=setup) - - print_version() - - for i in range(REPEATS): - print("# python::" + NAME) - elapsed = t.timeit(number=ITERATIONS) - print_results(elapsed) - print("ok " + str(i+1) + " benchmark finished") - - print_summary(REPEATS, REPEATS) - - -def main(): - """Run the benchmark.""" - benchmark() - - -if __name__ == "__main__": - main() diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/docs/types/index.d.ts b/lib/node_modules/@stdlib/math/base/special/sincospif/docs/types/index.d.ts index 88c5223653c3..56b714625208 100644 --- a/lib/node_modules/@stdlib/math/base/special/sincospif/docs/types/index.d.ts +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/docs/types/index.d.ts @@ -20,15 +20,18 @@ /// -import { NumericArray } from '@stdlib/types/array'; +import { Collection } from '@stdlib/types/array'; -interface sincospif { +/** +* Interface describing `sincospif`. +*/ +interface SinCosPiF { /** * Simultaneously computes the sine and cosine of a number times π using * single-precision floating-point arithmetic. * * @param x - input value - * @returns {Float32Array} two-element array containing sin(πx) and cos(πx) + * @returns two-element array containing sin(πx) and cos(πx) * * @example * var v = sincospif( 0.0 ); @@ -57,20 +60,20 @@ interface sincospif { * @param out - output array * @param stride - output array stride * @param offset - output array index offset - * @returns {Float32Array} two-element array containing sin(πx) and cos(πx) + * @returns two-element array containing sin(πx) and cos(πx) * * @example * var Float32Array = require( '@stdlib/array/float32' ); * * var out = new Float32Array( 2 ); * - * var v = sincospif.assign( 0.0, out, 1, 0 ); + * var v = sincospif( 0.0, out, 1, 0 ); * // returns [ 0.0, 1.0 ] * * var bool = ( v === out ); * // returns true */ - assign( x: number, out: T, stride: number, offset: number ): T; + assign( x: number, out: Collection, stride: number, offset: number ): Collection; } /** @@ -78,7 +81,7 @@ interface sincospif { * single-precision floating-point arithmetic. * * @param x - input value -* @returns {Float32Array} two-element array containing sin(πx) and cos(πx) +* @returns two-element array containing sin(πx) and cos(πx) * * @example * var v = sincospif( 0.0 ); @@ -96,7 +99,7 @@ interface sincospif { * var v = sincospif( NaN ); * // returns [ NaN, NaN ] */ -declare var sincospif: sincospif; +declare var sincospif: SinCosPiF; // EXPORTS // diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/docs/types/test.ts b/lib/node_modules/@stdlib/math/base/special/sincospif/docs/types/test.ts index 44da742e69ce..3fc191395913 100644 --- a/lib/node_modules/@stdlib/math/base/special/sincospif/docs/types/test.ts +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/docs/types/test.ts @@ -28,7 +28,7 @@ import sincospif = require( './index' ); sincospif( 1.0 ); // $ExpectType Float32Array } -// unsupported number of arguments +// The compiler throws an error if the function is provided an argument other than a number... { sincospif( true ); // $ExpectError sincospif( false ); // $ExpectError @@ -46,11 +46,11 @@ import sincospif = require( './index' ); sincospif( 1.0, 1.0 ); // $ExpectError } -// Attached to the main export is an `assign` method which returns a Float32Array... +// Attached to the main export is an `assign` method which returns an array-like object containing numbers... { const out = new Float32Array( 2 ); - sincospif.assign( 3.14e-319, out, 1, 0 ); // $ExpectType Float32Array + sincospif.assign( 3.14e-319, out, 1, 0 ); // $ExpectType Collection } // The compiler throws an error if the `assign` method is provided a first argument which is not a number... @@ -72,8 +72,7 @@ import sincospif = require( './index' ); sincospif.assign( 1.0, true, 1, 0 ); // $ExpectError sincospif.assign( 1.0, false, 1, 0 ); // $ExpectError sincospif.assign( 1.0, null, 1, 0 ); // $ExpectError - const obj: { a: number } = { a: 1 }; - sincospif.assign( 1.0, obj, 1, 0 ); // $ExpectError + sincospif.assign( 1.0, {}, 1, 0 ); // $ExpectError } // The compiler throws an error if the `assign` method is provided a third argument which is not a number... diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/lib/assign.js b/lib/node_modules/@stdlib/math/base/special/sincospif/lib/assign.js index eff4593d1ff9..021d11990dbb 100644 --- a/lib/node_modules/@stdlib/math/base/special/sincospif/lib/assign.js +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/lib/assign.js @@ -27,6 +27,7 @@ var sincosf = require( '@stdlib/math/base/special/sincosf' ).assign; var floorf = require( '@stdlib/math/base/special/floorf' ); var PI = require( '@stdlib/constants/float32/pi' ); var copysignf = require( '@stdlib/math/base/special/copysignf' ); +var f32 = require( '@stdlib/number/float64/base/to-float32' ); // MAIN // @@ -63,6 +64,8 @@ function sincospif( x, out, stride, offset ) { var ar; var r; + x = f32( x ); + if ( isnanf( x ) || isInfinitef( x ) ) { out[ offset ] = NaN; out[ offset + stride ] = NaN; @@ -104,7 +107,6 @@ function sincospif( x, out, stride, offset ) { out[ offset + stride ] = tmp; return out; } - r -= copysignf( 2.0, r ); return sincosf( PI*r, out, stride, offset ); } diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/test/fixtures/julia/decimals.json b/lib/node_modules/@stdlib/math/base/special/sincospif/test/fixtures/julia/decimals.json index 0a7177643f7b..8c72fe591424 100644 --- a/lib/node_modules/@stdlib/math/base/special/sincospif/test/fixtures/julia/decimals.json +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/test/fixtures/julia/decimals.json @@ -1 +1 @@ -{"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],"cos":[1.0,0.9511534530228996,0.8093857823947705,0.5885467104819188,0.3102106894855472,0.0015692264556667226,-0.30722553916178263,-0.58600649131677,-0.8075386562578029,-0.950179871381357,-0.9999950750566616,-0.9521176659107179,-0.811224936173504,-0.5910811325286653,-0.31319278426917446,-0.0047076639102974095,0.3042373627012731,0.5834605000541262,0.8056835759565839,0.9491969305757587,0.9999803002751568,0.9530725005474241,0.8130560994785208,0.5936097324932398,0.31617179413936874,0.007846054994972068,-0.3012461895372182,-0.5809087617716404,-0.8038205597634447,-0.9482046402879605,-0.9999556758010154,-0.9540179475280053,-0.8148792542731221,-0.596132485469219,-0.31914768975322033,-0.010984368796894167,0.2982520491323346,0.5783513016036816,0.8019496260288834,0.9472030102919091,0.9999212018767856,0.9549539975399158,0.8166943825994136,0.5986493666077721,0.3221204417984948,0.014122574404028403,-0.2952549709786086,-0.5757881447409429,-0.8000707931813853,-0.9461920504535466,-0.9998768788420318,-0.9558806413631561,-0.8185014665785871,-0.6011603511179051,-0.3250900209939213,-0.017260640905405175,0.29225498459683513,0.5732193164302286,0.798184079727241,0.9451717707307128,0.9998227071333307,0.9567978698704157,0.8203004884110702,0.6036654142667051,0.3280563980894813,0.020398537391425064,-0.28925211953658264,-0.5706448419742066,-0.7962895042503644,-0.9441421811730474,-0.9997586872842676,-0.9577056740270846,-0.8220914303767015,-0.6061645313795839,-0.3310195438666966,-0.023536232954118646,0.2862464053757318,0.5680647467311586,0.7943870854121091,0.9431032919218906,0.9996848199254319,0.9586040448913948,0.8238742748349058,0.6086576778405213,0.333979429138917,0.026673696687629467,-0.2832378717202264,-0.5654790561147303,-0.792476841951085,-0.9420551132101841,-0.9996011057844066,-0.9594929736144951,-0.8256490042248672,-0.6111448290923069,-0.336936024751608,-0.029810897688250668,0.280226548203782,0.5628877955936812,0.7905587926829739,0.9409976553623693,0.9995075456857675,0.9603724514405382,0.8274156010657022,0.6136259606367831,0.339889301582596,0.032947805054907915,-0.277212464487594,-0.5602909906916338,-0.7886329565003436,-0.9399309287943014,-0.9994041405510709,-0.9612424697067672,-0.8291740479566323,-0.6161010480350851,-0.34283923054252285,-0.03608438788941912,0.27419565026004544,0.5576886669868222,0.7866993523724624,0.9388549440130859,0.9992908913988456,0.9621030198436008,0.8309243275771547,0.6185700669078826,0.3457857825748805,0.03922061529679882,-0.2711761352364146,-0.5550808501118398,-0.7847579993451116,-0.9377697116170661,-0.9991677993445831,-0.9629540933747177,-0.8326664226872137,-0.6210329929355844,-0.34872892865646543,-0.04235645638556246,0.26815394915858226,0.5524675657533876,0.7828089165404264,0.936675242295658,0.9990348656007261,0.96379568191714,0.8344003161273698,0.6234898018587186,0.3516686397976222,0.04549188026803067,-0.2651291217947388,-0.5498488396520201,-0.7808521231565962,-0.9355715468292605,-0.9988920914766568,-0.964627777181316,-0.8361259908189689,-0.6259404694779603,-0.3546048870425292,-0.04862685606063354,0.262101682939091,0.5472246976018927,0.7788876384678417,0.9344586360891488,0.9987394783786844,0.9654503709712016,0.8378434297642868,0.6283849716545113,0.35753764146948386,0.05176135288421477,-0.2590716624115685,-0.5445951654505448,-0.7769154818241144,-0.9333365210373676,-0.9985770278100303,-0.9662634551843411,-0.8395526160467932,-0.6308232843103022,-0.36046687419118745,-0.05489533986433586,0.25603909005753006,0.5419602690984952,0.7749356726509338,0.932205212726623,0.9984047413708145,0.9670670218119474,0.8412535328311724,0.6332553834282297,0.36339255635502954,0.058028786131580204,-0.2530039957474698,-0.5393200344992116,-0.7729482304491959,-0.9310647223001737,-0.9982226207580387,-0.96786106293898,-0.8429461633635869,-0.635681245052393,-0.36631465914337236,-0.06116166082185717,0.2499664093767659,0.5366744876587057,0.7709531747949812,0.929915060991721,0.9980306677655703,0.9686455707442129,0.8446304909718177,0.6381008452883301,0.36923315377383464,0.0642939330767061,-0.24692636086521347,-0.5340236546353143,-0.7689505253393617,-0.9287562401252987,-0.9978288842841246,-0.9694205375003553,-0.8463064990654289,-0.6405141603032528,-0.372148011499575,-0.06742557204360021,0.24388388015698906,0.531367561539442,0.7669403018082076,0.9275882711151608,0.9976172723012461,0.9701859555740613,0.8479741711359305,0.6429211663262817,0.3750592036095751,0.07055654687620605,-0.24083899722018282,-0.5287062345333049,-0.764922524001993,-0.92641116546567,-0.9973958339012919,-0.9709418174260496,-0.8496334907569417,-0.6453218396486803,-0.3779667014289227,-0.0736868267348654,0.23779174204654666,0.5260396998306723,0.7628972117956005,0.9252249347711833,0.9971645712653989,0.9716881156111666,0.8512844415843522,0.6477161566240883,0.3808704763190936,0.07681638078663186,-0.23474214465119866,-0.5233679836966091,-0.7608643851381259,-0.9240295907159387,-0.996923486671481,-0.9724248427784598,-0.8529270073564835,-0.650104093668755,-0.38377049967819304,-0.07994517820575266,0.23169023507232764,0.5206911124472162,0.7588240640526814,0.9228251450739569,0.9966725824941941,0.9731519916712501,0.854561171894249,0.6524856272617711,0.38666674294140213,0.0830731881739278,-0.22863604337089707,-0.5180091124493722,-0.7567762686361985,-0.9216116097088566,-0.9964118612049159,-0.9738695551272032,-0.856186919101313,-0.6548607339453004,-0.3895591775810116,-0.08620037988061353,0.2255795996303491,0.515322010120473,0.75472101905923,0.9203889965738408,0.9961413253717215,0.9745775260784005,0.8578042329642498,0.6572293903247778,0.392447775106868,0.08932672252332598,-0.22252093395630818,-0.5126298319281722,-0.7526583355657805,-0.9191573177115103,-0.9958609776593583,-0.9752758975514083,-0.8594130975527011,-0.6595915730692735,-0.39533250706661316,-0.09245218530794436,0.21946007647628463,0.5099326043901199,0.7505882384729903,0.9179165852537624,0.9955708208292194,0.9759646626673468,0.8610134970195331,0.6619472589115217,0.39821334504596406,0.09557673744901445,-0.21639705733937772,-0.5072303540737015,-0.7485107481711102,-0.9166668114216711,-0.9952708577393169,-0.9766438146419576,-0.8626054156009698,-0.6642964246482838,-0.40109026066899317,-0.09870034817005174,0.21333190671597888,0.5045231075958151,0.7464258851231844,0.915408008525367,0.9949610913442529,0.9773133467856706,0.864188837616839,0.6666390471405432,0.4039632255984075,0.10182298670384461,-0.21026465479747436,-0.5018108916224547,-0.7443336698648776,-0.9141401889639159,-0.9946415246951916,-0.9779732525036703,-0.8657637474705903,-0.6689751033137342,-0.40683221153582827,-0.10494462229275738,0.20719533179594798,0.49909373286867864,0.742234123004273,0.9128633652251971,0.9943121609398281,0.9786235252959509,0.8673301296495403,0.671304570157968,0.4096971902220689,0.10806522418903322,-0.20412396794392718,-0.49637165809819284,-0.7401272652216693,-0.9115775498857795,-0.9939730033223582,-0.9792641587574173,-0.868887968725002,-0.6736274247282602,-0.41255813343741415,-0.11118476165509714,0.20105059349391047,0.4936446941231253,0.7380131172693769,0.9102827556107986,0.9936240551834458,0.9798951465778981,0.8704372493524369,0.6759436441447565,0.4154150130018772,0.11430320396383638,-0.1979752387183097,-0.49091286780376203,-0.7358916999715134,-0.9089789951538405,-0.9932653199601932,-0.9805164825422256,-0.8719779562716067,-0.6782532055929582,-0.4182678007755587,-0.11742052039899199,0.1948979339090865,0.4881762060482828,0.733763034223799,0.9076662813567794,0.9928968011860967,0.9811281605303109,0.8735100743067227,0.6805560863239468,0.4211164686588021,0.12053668025532817,-0.1918187093772789,-0.4854347358124958,-0.7316271409933499,-0.9063446271497066,-0.9925185024910269,-0.9817301745172043,-0.8750335883665958,-0.6828522636545916,-0.42396098859255155,-0.12365165283902345,0.1887375954529215,0.4826884840995721,0.7294840413184877,0.9050140455507666,0.9921304276011831,0.9823225185731316,0.8765484834447852,0.6851417149678389,0.42680133255860797,0.12676540746792872,-0.18565462248463727,-0.47993747795977987,-0.7273337563084709,-0.903674549666037,-0.9917325803390618,-0.9829051868635711,-0.8780547446197461,-0.6874244177128364,-0.4296374725799053,-0.1298779134719581,0.18256982083936055,0.4771817444902179,0.7251763071433783,0.9023261526894006,0.9913249646234078,0.983478173649306,0.8795523570549659,0.6897003494052205,0.43246938072078567,0.13298914019325794,-0.17948322090203797,-0.4744213108345682,-0.7230117150738399,-0.9009688679024149,-0.9909075844691926,-0.9840414732864815,-0.8810413059991534,-0.6919694876273221,-0.4352970290872748,-0.1360990569865977,0.17639485307532915,0.4716562041827501,0.7208400014208419,0.899602708674191,0.9904804439875632,0.98459508022666,0.8825215767863192,0.694231810028387,0.43812038982733664,0.1392076332196493,-0.1733047477793072,-0.4688864517707705,-0.7186611875755181,-0.8982276884612228,-0.9900435473858052,-0.985138989016872,-0.883993154835964,-0.6964872943247957,-0.4409394351312281,-0.14231483827328917,0.1702129354511811,0.4661120808803767,0.7164752949989377,0.8968438208073135,0.9895968989673004,0.9856731942996854,0.8854560256532107,0.6987359183002837,0.44375413723165225,0.14542064154189963,-0.16711944654490793,-0.4633331188388077,-0.7142823452219105,-0.8954511193434026,-0.9891405031314853,-0.9861976908132347,-0.8869101748289475,-0.7009776598061435,-0.4465644684041123,-0.14852501243367047,0.1640243115310248,0.4605495930185245,0.7120823598447122,0.8940495977874416,0.9886743643738104,0.9867124733912886,0.88835558803997,0.7032124967615073,0.4493704009671648,0.15162792037087813,-0.1609275608962609,-0.4577615308369411,-0.709875360536965,-0.8926392699442591,-0.9881984872856829,-0.9872175369632974,-0.8897922510491216,-0.7054404071534685,-0.4521719072826919,-0.15472933479027517,0.157829225143259,0.45496895975617396,0.707661369037362,0.8912201497054245,0.9877128765544417,0.9877128765544417,0.8912201497054245,0.707661369037362,0.45496895975617396,0.157829225143259,-0.15472933479027517,-0.4521719072826919,-0.7054404071534685,-0.8897922510491216,-0.9872175369632974,-0.9881984872856829,-0.8926392699442591,-0.709875360536965,-0.4577615308369411,-0.1609275608962609,0.15162792037087813,0.4493704009671648,0.7032124967615073,0.88835558803997,0.9867124733912886,0.9886743643738104,0.8940495977874416,0.7120823598447122,0.4605495930185245,0.1640243115310248,-0.14852501243367047,-0.4465644684041123,-0.7009776598061435,-0.8869101748289475,-0.9861976908132347,-0.9891405031314853,-0.8954511193434026,-0.7142823452219105,-0.4633331188388077,-0.16711944654490793,0.14542064154189963,0.44375413723165225,0.6987359183002837,0.8854560256532107,0.9856731942996854,0.9895968989673004,0.8968438208073135,0.7164752949989377,0.4661120808803767,0.1702129354511811,-0.14231483827328917,-0.4409394351312281,-0.6964872943247957,-0.883993154835964,-0.985138989016872,-0.9900435473858052,-0.8982276884612228,-0.7186611875755181,-0.4688864517707705,-0.1733047477793072,0.1392076332196493,0.43812038982733664,0.694231810028387,0.8825215767863192,0.98459508022666,0.9904804439875632,0.899602708674191,0.7208400014208419,0.4716562041827501,0.17639485307532915,-0.1360990569865977,-0.4352970290872748,-0.6919694876273221,-0.8810413059991534,-0.9840414732864815,-0.9909075844691926,-0.9009688679024149,-0.7230117150738399,-0.4744213108345682,-0.17948322090203797,0.13298914019325794,0.43246938072078567,0.6897003494052205,0.8795523570549659,0.983478173649306,0.9913249646234078,0.9023261526894006,0.7251763071433783,0.4771817444902179,0.18256982083936055,-0.1298779134719581,-0.4296374725799053,-0.6874244177128364,-0.8780547446197461,-0.9829051868635711,-0.9917325803390618,-0.903674549666037,-0.7273337563084709,-0.47993747795977987,-0.18565462248463727,0.12676540746792872,0.42680133255860797,0.6851417149678389,0.8765484834447852,0.9823225185731316,0.9921304276011831,0.9050140455507666,0.7294840413184877,0.4826884840995721,0.1887375954529215,-0.12365165283902345,-0.42396098859255155,-0.6828522636545916,-0.8750335883665958,-0.9817301745172043,-0.9925185024910269,-0.9063446271497066,-0.7316271409933499,-0.4854347358124958,-0.1918187093772789,0.12053668025532817,0.4211164686588021,0.6805560863239468,0.8735100743067227,0.9811281605303109,0.9928968011860967,0.9076662813567794,0.733763034223799,0.4881762060482828,0.1948979339090865,-0.11742052039899199,-0.4182678007755587,-0.6782532055929582,-0.8719779562716067,-0.9805164825422256,-0.9932653199601932,-0.9089789951538405,-0.7358916999715134,-0.49091286780376203,-0.1979752387183097,0.11430320396383638,0.4154150130018772,0.6759436441447565,0.8704372493524369,0.9798951465778981,0.9936240551834483,0.9102827556107986,0.7380131172693769,0.4936446941231253,0.2010505934938886,-0.11118476165507495,-0.41255813343741415,-0.6736274247282602,-0.868887968725002,-0.9792641587574219,-0.9939730033223606,-0.9115775498857795,-0.7401272652216693,-0.49637165809819284,-0.20412396794390533,0.10806522418901103,0.4096971902220689,0.671304570157968,0.8673301296495514,0.9786235252959554,0.9943121609398304,0.9128633652251971,0.742234123004273,0.4990937328686593,0.2071953317959698,-0.10494462229273517,-0.40683221153582827,-0.6689751033137342,-0.8657637474706015,-0.9779732525036656,-0.9946415246951916,-0.9141401889639159,-0.7443336698648776,-0.5018108916224354,-0.21026465479749618,0.10182298670384461,0.4039632255984075,0.6666390471405432,0.8641888376168502,0.977313346785666,0.994961091344254,0.915408008525367,0.746425885123177,0.5045231075957959,0.21333190671598978,-0.09870034817004063,-0.40109026066899317,-0.6642964246482921,-0.8626054156009811,-0.9766438146419552,-0.9952708577393169,-0.9166668114216711,-0.7485107481711027,-0.5072303540737207,-0.21639705733938863,0.09557673744901445,0.39821334504597433,0.6619472589115301,0.8610134970195218,0.9759646626673444,0.9955708208292194,0.917916585253758,0.7505882384729755,0.5099326043901391,0.2194600764762955,-0.09245218530794436,-0.3953325070666234,-0.6595915730692903,-0.8594130975526897,-0.9752758975514059,-0.9958609776593583,-0.9191573177115059,-0.7526583355657658,-0.5126298319281818,-0.22252093395631906,0.08932672252332598,0.3924477751068783,0.6572293903247945,0.857804232964244,0.9745775260784005,0.9961413253717215,0.9203889965738364,0.7547210190592446,0.5153220101204826,0.2255795996303491,-0.08620037988062465,-0.3895591775810219,-0.6548607339452835,-0.8561869191013072,-0.9738695551272032,-0.996411861204915,-0.9216116097088523,-0.7567762686362132,-0.5180091124493816,-0.22863604337089707,0.08307318817393891,0.3866667429414227,0.6524856272617542,0.8545611718942432,0.9731519916712501,0.9966725824941932,0.9228251450739483,0.7588240640526888,0.5206911124472257,0.23169023507232764,-0.07994517820576379,-0.38377049967821364,-0.6501040936687466,-0.8529270073564835,-0.9724248427784598,-0.9969234866714801,-0.9240295907159473,-0.7608643851381333,-0.5233679836966091,-0.2347421446511878,0.07681638078664299,0.38087047631907295,0.6477161566240799,0.8512844415843522,0.9716881156111692,0.997164571265398,0.9252249347711918,0.7628972117956078,0.5260396998306723,0.2377917420465358,-0.07368682673488768,-0.377966701428902,-0.6453218396486717,-0.8496334907569417,-0.9709418174260522,-0.9973958339012903,-0.9264111654656743,-0.7649225240020002,-0.5287062345333049,-0.240838997220172,0.07055654687622831,0.3750592036095648,0.6429211663262817,0.8479741711359305,0.970185955574064,0.9976172723012476,0.9275882711151651,0.7669403018082076,0.5313675615394325,0.24388388015697823,-0.06742557204357794,-0.3721480114995646,-0.6405141603032528,-0.8463064990654348,-0.969420537500358,-0.9978288842841261,-0.9287562401253028,-0.7689505253393617,-0.5340236546353049,-0.24692636086519185,0.06429393307668381,0.36923315377382426,0.6381008452883301,0.8446304909718237,0.9686455707442184,0.998030667765571,0.9299150609917252,0.7709531747949812,0.5366744876586964,0.24996640937674428,-0.061161660821846035,-0.36631465914337236,-0.635681245052393,-0.8429461633635928,-0.9678610629389743,-0.9982226207580394,-0.9310647223001737,-0.7729482304491959,-0.5393200344992022,-0.2530039957474914,0.05802878613156907,0.36339255635502954,0.6332553834282384,0.8412535328311784,0.9670670218119417,0.998404741370815,0.932205212726623,0.7749356726509268,0.5419602690984764,0.25603909005755165,-0.05489533986432472,-0.36046687419118745,-0.6308232843103109,-0.8395526160468053,-0.9662634551843382,-0.9985770278100309,-0.9333365210373676,-0.7769154818241074,-0.5445951654505261,-0.25907166241157925,0.05176135288421477,0.35753764146948386,0.62838497165452,0.8378434297642989,0.9654503709711987,0.9987394783786846,0.9344586360891468,0.7788876384678312,0.5472246976019114,0.26210168293910174,-0.04862685606063354,-0.3546048870425344,-0.6259404694779733,-0.8361259908189598,-0.964627777181313,-0.9988920914766568,-0.9355715468292566,-0.7808521231565857,-0.5498488396520341,-0.26512912179474957,0.04549188026803067,0.35166863979763263,0.6234898018587317,0.8344003161273605,0.9637956819171385,0.9990348656007261,0.9366752422956541,0.7828089165404125,0.5524675657534015,0.26815394915858765,-0.042356456385568036,-0.34872892865647587,-0.621032992935602,-0.8326664226872075,-0.9629540933747162,-0.9991677993445829,-0.9377697116170602,-0.7847579993451254,-0.5550808501118492,-0.2711761352364146,0.039220615296804394,0.3457857825748962,0.6185700669078694,0.8309243275771485,0.9621030198436008,0.9992908913988454,0.9388549440130801,0.7866993523724727,0.5576886669868315,0.27419565026004544,-0.036084387889430275,-0.34283923054253856,-0.6161010480350719,-0.8291740479566292,-0.9612424697067672,-0.9994041405510704,-0.9399309287942939,-0.7886329565003539,-0.5602909906916385,-0.27721246448758863,0.032947805054919066,0.339889301582617,0.6136259606367743,0.8274156010656991,0.9603724514405397,0.9995075456857669,0.9409976553623769,0.7905587926829808,0.5628877955936812,0.2802265482037766,-0.029810897688267404,-0.336936024751587,-0.6111448290922982,-0.8256490042248672,-0.9594929736144967,-0.9996011057844062,-0.9420551132101898,-0.7924768419510918,-0.5654790561147303,-0.2832378717202157,0.026673696687646204,0.33397942913890116,0.6086576778405168,0.8238742748349058,0.958604044891398,0.9996848199254315,0.9431032919218952,0.7943870854121124,0.5680647467311564,0.28624640537571844,-0.02353623295414096,-0.33101954386668336,-0.6061645313795795,-0.8220914303767047,-0.9577056740270887,-0.9997586872842681,-0.944142181173051,-0.7962895042503662,-0.5706448419742021,-0.28925211953656665,0.020398537391405534,0.32805639808947074,0.6036654142667051,0.820300488411075,0.9567978698704206,0.9998227071333311,0.9451717707307156,0.798184079727241,0.5732193164302217,0.2922549845968164,-0.017260640905388435,-0.3250900209939134,-0.6011603511179073,-0.8185014665785936,-0.9558806413631618,-0.9998768788420319,-0.9461920504535485,-0.8000707931813836,-0.5757881447409338,-0.2952549709785873,0.014122574404014453,0.32212044179848953,0.5986493666077767,0.8166943825994217,0.9549539975399092,0.9999212018767858,0.94720301029191,0.8019496260288792,0.5783513016036692,0.29825204913235326,-0.010984368796883007,-0.31914768975321905,-0.5961324854692258,-0.8148792542731318,-0.9540179475279998,-0.9999556758010154,-0.9482046402879605,-0.8038205597634389,-0.5809087617716256,-0.3012461895372342,0.007846054994965093,0.31617179413937,0.5936097324932488,0.8130560994785322,0.9530725005474194,0.9999803002751568,0.9491969305757576,0.8056835759565766,0.5834605000541087,0.30423736270128643,-0.004707663910292526,-0.3131927842691791,-0.5910811325286766,-0.8112249361734913,-0.952117665910714,-0.9999950750566616,-0.950179871381355,-0.8075386562577938,-0.5860064913167861,-0.3072255391617929,0.0015692264556651531,0.3102106894855545,0.5885467104819324,0.8093857823947597,0.9511534530228968,1.0,0.9511534530228968,0.8093857823947597,0.5885467104819324,0.3102106894855545,0.0015692264556651531,-0.3072255391617929,-0.5860064913167861,-0.8075386562577938,-0.950179871381355,-0.9999950750566616,-0.952117665910714,-0.8112249361734913,-0.5910811325286766,-0.3131927842691791,-0.004707663910292526,0.30423736270128643,0.5834605000541087,0.8056835759565766,0.9491969305757576,0.9999803002751568,0.9530725005474194,0.8130560994785322,0.5936097324932488,0.31617179413937,0.007846054994965093,-0.3012461895372342,-0.5809087617716256,-0.8038205597634389,-0.9482046402879605,-0.9999556758010154,-0.9540179475279998,-0.8148792542731318,-0.5961324854692258,-0.31914768975321905,-0.010984368796883007,0.29825204913235326,0.5783513016036692,0.8019496260288792,0.94720301029191,0.9999212018767858,0.9549539975399092,0.8166943825994217,0.5986493666077767,0.32212044179848953,0.014122574404014453,-0.2952549709785873,-0.5757881447409338,-0.8000707931813836,-0.9461920504535485,-0.9998768788420319,-0.9558806413631618,-0.8185014665785936,-0.6011603511179073,-0.3250900209939134,-0.017260640905388435,0.2922549845968164,0.5732193164302217,0.798184079727241,0.9451717707307156,0.9998227071333311,0.9567978698704206,0.820300488411075,0.6036654142667051,0.32805639808947074,0.020398537391405534,-0.28925211953656665,-0.5706448419742021,-0.7962895042503662,-0.944142181173051,-0.9997586872842681,-0.9577056740270887,-0.8220914303767047,-0.6061645313795795,-0.33101954386668336,-0.02353623295414096,0.28624640537571844,0.5680647467311564,0.7943870854121124,0.9431032919218952,0.9996848199254315,0.958604044891398,0.8238742748349058,0.6086576778405168,0.33397942913890116,0.026673696687646204,-0.2832378717202157,-0.5654790561147303,-0.7924768419510918,-0.9420551132101898,-0.9996011057844062,-0.9594929736144967,-0.8256490042248672,-0.6111448290922982,-0.336936024751587,-0.029810897688267404,0.2802265482037766,0.5628877955936812,0.7905587926829808,0.9409976553623769,0.9995075456857669,0.9603724514405397,0.8274156010656991,0.6136259606367743,0.339889301582617,0.032947805054919066,-0.27721246448758863,-0.5602909906916385,-0.7886329565003539,-0.9399309287942939,-0.9994041405510704,-0.9612424697067672,-0.8291740479566292,-0.6161010480350719,-0.34283923054253856,-0.036084387889430275,0.27419565026004544,0.5576886669868315,0.7866993523724727,0.9388549440130801,0.9992908913988454,0.9621030198436008,0.8309243275771485,0.6185700669078694,0.3457857825748962,0.039220615296804394,-0.2711761352364146,-0.5550808501118492,-0.7847579993451254,-0.9377697116170602,-0.9991677993445829,-0.9629540933747162,-0.8326664226872075,-0.621032992935602,-0.34872892865647587,-0.042356456385568036,0.26815394915858765,0.5524675657534015,0.7828089165404125,0.9366752422956541,0.9990348656007261,0.9637956819171385,0.8344003161273605,0.6234898018587317,0.35166863979763263,0.04549188026803067,-0.26512912179474957,-0.5498488396520341,-0.7808521231565857,-0.9355715468292566,-0.9988920914766568,-0.964627777181313,-0.8361259908189598,-0.6259404694779733,-0.3546048870425344,-0.04862685606063354,0.26210168293910174,0.5472246976019114,0.7788876384678312,0.9344586360891468,0.9987394783786846,0.9654503709711987,0.8378434297642989,0.62838497165452,0.35753764146948386,0.05176135288421477,-0.25907166241157925,-0.5445951654505261,-0.7769154818241074,-0.9333365210373676,-0.9985770278100309,-0.9662634551843382,-0.8395526160468053,-0.6308232843103109,-0.36046687419118745,-0.05489533986432472,0.25603909005755165,0.5419602690984764,0.7749356726509268,0.932205212726623,0.998404741370815,0.9670670218119417,0.8412535328311784,0.6332553834282384,0.36339255635502954,0.05802878613156907,-0.2530039957474914,-0.5393200344992022,-0.7729482304491959,-0.9310647223001737,-0.9982226207580394,-0.9678610629389743,-0.8429461633635928,-0.635681245052393,-0.36631465914337236,-0.061161660821846035,0.24996640937674428,0.5366744876586964,0.7709531747949812,0.9299150609917252,0.998030667765571,0.9686455707442184,0.8446304909718237,0.6381008452883301,0.36923315377382426,0.06429393307668381,-0.24692636086519185,-0.5340236546353049,-0.7689505253393617,-0.9287562401253028,-0.9978288842841261,-0.969420537500358,-0.8463064990654348,-0.6405141603032528,-0.3721480114995646,-0.06742557204357794,0.24388388015697823,0.5313675615394325,0.7669403018082076,0.9275882711151651,0.9976172723012476,0.970185955574064,0.8479741711359305,0.6429211663262817,0.3750592036095648,0.07055654687622831,-0.240838997220172,-0.5287062345333049,-0.7649225240020002,-0.9264111654656743,-0.9973958339012903,-0.9709418174260522,-0.8496334907569417,-0.6453218396486717,-0.377966701428902,-0.07368682673488768,0.2377917420465358,0.5260396998306723,0.7628972117956078,0.9252249347711918,0.997164571265398,0.9716881156111692,0.8512844415843522,0.6477161566240799,0.38087047631907295,0.07681638078664299,-0.2347421446511878,-0.5233679836966091,-0.7608643851381333,-0.9240295907159473,-0.9969234866714801,-0.9724248427784598,-0.8529270073564835,-0.6501040936687466,-0.38377049967821364,-0.07994517820576379,0.23169023507232764,0.5206911124472257,0.7588240640526888,0.9228251450739483,0.9966725824941932,0.9731519916712501,0.8545611718942432,0.6524856272617542,0.3866667429414227,0.08307318817393891,-0.22863604337089707,-0.5180091124493816,-0.7567762686362132,-0.9216116097088523,-0.996411861204915,-0.9738695551272032,-0.8561869191013072,-0.6548607339452835,-0.3895591775810219,-0.08620037988062465,0.2255795996303491,0.5153220101204826,0.7547210190592446,0.9203889965738364,0.9961413253717215,0.9745775260784005,0.857804232964244,0.6572293903247945,0.3924477751068783,0.08932672252332598,-0.22252093395631906,-0.5126298319281818,-0.7526583355657658,-0.9191573177115059,-0.9958609776593583,-0.9752758975514059,-0.8594130975526897,-0.6595915730692903,-0.3953325070666234,-0.09245218530794436,0.2194600764762955,0.5099326043901391,0.7505882384729755,0.917916585253758,0.9955708208292194,0.9759646626673444,0.8610134970195218,0.6619472589115301,0.39821334504597433,0.09557673744901445,-0.21639705733938863,-0.5072303540737207,-0.7485107481711027,-0.9166668114216711,-0.9952708577393169,-0.9766438146419552,-0.8626054156009811,-0.6642964246482921,-0.40109026066899317,-0.09870034817004063,0.21333190671598978,0.5045231075957959,0.746425885123177,0.915408008525367,0.994961091344254,0.977313346785666,0.8641888376168502,0.6666390471405432,0.4039632255984075,0.10182298670384461,-0.21026465479749618,-0.5018108916224354,-0.7443336698648776,-0.9141401889639159,-0.9946415246951916,-0.9779732525036656,-0.8657637474706015,-0.6689751033137342,-0.40683221153582827,-0.10494462229273517,0.2071953317959698,0.4990937328686593,0.742234123004273,0.9128633652251971,0.9943121609398304,0.9786235252959554,0.8673301296495514,0.671304570157968,0.4096971902220689,0.10806522418901103,-0.20412396794390533,-0.49637165809819284,-0.7401272652216693,-0.9115775498857795,-0.9939730033223606,-0.9792641587574219,-0.868887968725002,-0.6736274247282602,-0.41255813343741415,-0.11118476165507495,0.2010505934938886,0.4936446941231253,0.7380131172693769,0.9102827556107986,0.9936240551834483,0.9798951465778981,0.8704372493524369,0.6759436441447565,0.4154150130018772,0.11430320396383638,-0.1979752387183097,-0.49091286780376203,-0.7358916999715134,-0.9089789951538405,-0.9932653199601932,-0.9805164825422256,-0.8719779562716067,-0.6782532055929582,-0.4182678007755587,-0.11742052039899199,0.1948979339090865,0.4881762060482828,0.733763034223799,0.9076662813567794,0.9928968011860967,0.9811281605303109,0.8735100743067227,0.6805560863239468,0.4211164686588021,0.12053668025532817,-0.1918187093772789,-0.4854347358124958,-0.7316271409933499,-0.9063446271497066,-0.9925185024910269,-0.9817301745172043,-0.8750335883665958,-0.6828522636545916,-0.42396098859255155,-0.12365165283902345,0.1887375954529215,0.4826884840995721,0.7294840413184877,0.9050140455507666,0.9921304276011831,0.9823225185731316,0.8765484834447852,0.6851417149678389,0.42680133255860797,0.12676540746792872,-0.18565462248463727,-0.47993747795977987,-0.7273337563084709,-0.903674549666037,-0.9917325803390618,-0.9829051868635711,-0.8780547446197461,-0.6874244177128364,-0.4296374725799053,-0.1298779134719581,0.18256982083936055,0.4771817444902179,0.7251763071433783,0.9023261526894006,0.9913249646234078,0.983478173649306,0.8795523570549659,0.6897003494052205,0.43246938072078567,0.13298914019325794,-0.17948322090203797,-0.4744213108345682,-0.7230117150738399,-0.9009688679024149,-0.9909075844691926,-0.9840414732864815,-0.8810413059991534,-0.6919694876273221,-0.4352970290872748,-0.1360990569865977,0.17639485307532915,0.4716562041827501,0.7208400014208419,0.899602708674191,0.9904804439875632,0.98459508022666,0.8825215767863192,0.694231810028387,0.43812038982733664,0.1392076332196493,-0.1733047477793072,-0.4688864517707705,-0.7186611875755181,-0.8982276884612228,-0.9900435473858052,-0.985138989016872,-0.883993154835964,-0.6964872943247957,-0.4409394351312281,-0.14231483827328917,0.1702129354511811,0.4661120808803767,0.7164752949989377,0.8968438208073135,0.9895968989673004,0.9856731942996854,0.8854560256532107,0.6987359183002837,0.44375413723165225,0.14542064154189963,-0.16711944654490793,-0.4633331188388077,-0.7142823452219105,-0.8954511193434026,-0.9891405031314853,-0.9861976908132347,-0.8869101748289475,-0.7009776598061435,-0.4465644684041123,-0.14852501243367047,0.1640243115310248,0.4605495930185245,0.7120823598447122,0.8940495977874416,0.9886743643738104,0.9867124733912886,0.88835558803997,0.7032124967615073,0.4493704009671648,0.15162792037087813,-0.1609275608962609,-0.4577615308369411,-0.709875360536965,-0.8926392699442591,-0.9881984872856829,-0.9872175369632974,-0.8897922510491216,-0.7054404071534685,-0.4521719072826919,-0.15472933479027517,0.157829225143259,0.45496895975617396,0.707661369037362,0.8912201497054245,0.9877128765544417,0.9877128765544417,0.8912201497054245,0.707661369037362,0.45496895975617396,0.157829225143259,-0.15472933479027517,-0.4521719072826919,-0.7054404071534685,-0.8897922510491216,-0.9872175369632974,-0.9881984872856829,-0.8926392699442591,-0.709875360536965,-0.4577615308369411,-0.1609275608962609,0.15162792037087813,0.4493704009671648,0.7032124967615073,0.88835558803997,0.9867124733912886,0.9886743643738104,0.8940495977874416,0.7120823598447122,0.4605495930185245,0.1640243115310248,-0.14852501243367047,-0.4465644684041123,-0.7009776598061435,-0.8869101748289475,-0.9861976908132347,-0.9891405031314853,-0.8954511193434026,-0.7142823452219105,-0.4633331188388077,-0.16711944654490793,0.14542064154189963,0.44375413723165225,0.6987359183002837,0.8854560256532107,0.9856731942996854,0.9895968989673004,0.8968438208073135,0.7164752949989377,0.4661120808803767,0.1702129354511811,-0.14231483827328917,-0.4409394351312281,-0.6964872943247957,-0.883993154835964,-0.985138989016872,-0.9900435473858052,-0.8982276884612228,-0.7186611875755181,-0.4688864517707705,-0.1733047477793072,0.1392076332196493,0.43812038982733664,0.694231810028387,0.8825215767863192,0.98459508022666,0.9904804439875632,0.899602708674191,0.7208400014208419,0.4716562041827501,0.17639485307532915,-0.1360990569865977,-0.4352970290872748,-0.6919694876273221,-0.8810413059991534,-0.9840414732864815,-0.9909075844691926,-0.9009688679024149,-0.7230117150738399,-0.4744213108345682,-0.17948322090203797,0.13298914019325794,0.43246938072078567,0.6897003494052205,0.8795523570549659,0.983478173649306,0.9913249646234078,0.9023261526894006,0.7251763071433783,0.4771817444902179,0.18256982083936055,-0.1298779134719581,-0.4296374725799053,-0.6874244177128364,-0.8780547446197461,-0.9829051868635711,-0.9917325803390618,-0.903674549666037,-0.7273337563084709,-0.47993747795977987,-0.18565462248463727,0.12676540746792872,0.42680133255860797,0.6851417149678389,0.8765484834447852,0.9823225185731316,0.9921304276011831,0.9050140455507666,0.7294840413184877,0.4826884840995721,0.1887375954529215,-0.12365165283902345,-0.42396098859255155,-0.6828522636545916,-0.8750335883665958,-0.9817301745172043,-0.9925185024910269,-0.9063446271497066,-0.7316271409933499,-0.4854347358124958,-0.1918187093772789,0.12053668025532817,0.4211164686588021,0.6805560863239468,0.8735100743067227,0.9811281605303109,0.9928968011860967,0.9076662813567794,0.733763034223799,0.4881762060482828,0.1948979339090865,-0.11742052039899199,-0.4182678007755587,-0.6782532055929582,-0.8719779562716067,-0.9805164825422256,-0.9932653199601932,-0.9089789951538405,-0.7358916999715134,-0.49091286780376203,-0.1979752387183097,0.11430320396383638,0.4154150130018772,0.6759436441447565,0.8704372493524369,0.9798951465778981,0.9936240551834458,0.9102827556107986,0.7380131172693769,0.4936446941231253,0.20105059349391047,-0.11118476165509714,-0.41255813343741415,-0.6736274247282602,-0.868887968725002,-0.9792641587574173,-0.9939730033223582,-0.9115775498857795,-0.7401272652216693,-0.49637165809819284,-0.20412396794392718,0.10806522418903322,0.4096971902220689,0.671304570157968,0.8673301296495403,0.9786235252959509,0.9943121609398281,0.9128633652251971,0.742234123004273,0.49909373286867864,0.20719533179594798,-0.10494462229275738,-0.40683221153582827,-0.6689751033137342,-0.8657637474705903,-0.9779732525036703,-0.9946415246951916,-0.9141401889639159,-0.7443336698648776,-0.5018108916224547,-0.21026465479747436,0.10182298670384461,0.4039632255984075,0.6666390471405432,0.864188837616839,0.9773133467856706,0.9949610913442529,0.915408008525367,0.7464258851231844,0.5045231075958151,0.21333190671597888,-0.09870034817005174,-0.40109026066899317,-0.6642964246482838,-0.8626054156009698,-0.9766438146419576,-0.9952708577393169,-0.9166668114216711,-0.7485107481711102,-0.5072303540737015,-0.21639705733937772,0.09557673744901445,0.39821334504596406,0.6619472589115217,0.8610134970195331,0.9759646626673468,0.9955708208292194,0.9179165852537624,0.7505882384729903,0.5099326043901199,0.21946007647628463,-0.09245218530794436,-0.39533250706661316,-0.6595915730692735,-0.8594130975527011,-0.9752758975514083,-0.9958609776593583,-0.9191573177115103,-0.7526583355657805,-0.5126298319281722,-0.22252093395630818,0.08932672252332598,0.392447775106868,0.6572293903247778,0.8578042329642498,0.9745775260784005,0.9961413253717215,0.9203889965738408,0.75472101905923,0.515322010120473,0.2255795996303491,-0.08620037988061353,-0.3895591775810116,-0.6548607339453004,-0.856186919101313,-0.9738695551272032,-0.9964118612049159,-0.9216116097088566,-0.7567762686361985,-0.5180091124493722,-0.22863604337089707,0.0830731881739278,0.38666674294140213,0.6524856272617711,0.854561171894249,0.9731519916712501,0.9966725824941941,0.9228251450739569,0.7588240640526814,0.5206911124472162,0.23169023507232764,-0.07994517820575266,-0.38377049967819304,-0.650104093668755,-0.8529270073564835,-0.9724248427784598,-0.996923486671481,-0.9240295907159387,-0.7608643851381259,-0.5233679836966091,-0.23474214465119866,0.07681638078663186,0.3808704763190936,0.6477161566240883,0.8512844415843522,0.9716881156111666,0.9971645712653989,0.9252249347711833,0.7628972117956005,0.5260396998306723,0.23779174204654666,-0.0736868267348654,-0.3779667014289227,-0.6453218396486803,-0.8496334907569417,-0.9709418174260496,-0.9973958339012919,-0.92641116546567,-0.764922524001993,-0.5287062345333049,-0.24083899722018282,0.07055654687620605,0.3750592036095751,0.6429211663262817,0.8479741711359305,0.9701859555740613,0.9976172723012461,0.9275882711151608,0.7669403018082076,0.531367561539442,0.24388388015698906,-0.06742557204360021,-0.372148011499575,-0.6405141603032528,-0.8463064990654289,-0.9694205375003553,-0.9978288842841246,-0.9287562401252987,-0.7689505253393617,-0.5340236546353143,-0.24692636086521347,0.0642939330767061,0.36923315377383464,0.6381008452883301,0.8446304909718177,0.9686455707442129,0.9980306677655703,0.929915060991721,0.7709531747949812,0.5366744876587057,0.2499664093767659,-0.06116166082185717,-0.36631465914337236,-0.635681245052393,-0.8429461633635869,-0.96786106293898,-0.9982226207580387,-0.9310647223001737,-0.7729482304491959,-0.5393200344992116,-0.2530039957474698,0.058028786131580204,0.36339255635502954,0.6332553834282297,0.8412535328311724,0.9670670218119474,0.9984047413708145,0.932205212726623,0.7749356726509338,0.5419602690984952,0.25603909005753006,-0.05489533986433586,-0.36046687419118745,-0.6308232843103022,-0.8395526160467932,-0.9662634551843411,-0.9985770278100303,-0.9333365210373676,-0.7769154818241144,-0.5445951654505448,-0.2590716624115685,0.05176135288421477,0.35753764146948386,0.6283849716545113,0.8378434297642868,0.9654503709712016,0.9987394783786844,0.9344586360891488,0.7788876384678417,0.5472246976018927,0.262101682939091,-0.04862685606063354,-0.3546048870425292,-0.6259404694779603,-0.8361259908189689,-0.964627777181316,-0.9988920914766568,-0.9355715468292605,-0.7808521231565962,-0.5498488396520201,-0.2651291217947388,0.04549188026803067,0.3516686397976222,0.6234898018587186,0.8344003161273698,0.96379568191714,0.9990348656007261,0.936675242295658,0.7828089165404264,0.5524675657533876,0.26815394915858226,-0.04235645638556246,-0.34872892865646543,-0.6210329929355844,-0.8326664226872137,-0.9629540933747177,-0.9991677993445831,-0.9377697116170661,-0.7847579993451116,-0.5550808501118398,-0.2711761352364146,0.03922061529679882,0.3457857825748805,0.6185700669078826,0.8309243275771547,0.9621030198436008,0.9992908913988456,0.9388549440130859,0.7866993523724624,0.5576886669868222,0.27419565026004544,-0.03608438788941912,-0.34283923054252285,-0.6161010480350851,-0.8291740479566323,-0.9612424697067672,-0.9994041405510709,-0.9399309287943014,-0.7886329565003436,-0.5602909906916338,-0.277212464487594,0.032947805054907915,0.339889301582596,0.6136259606367831,0.8274156010657022,0.9603724514405382,0.9995075456857675,0.9409976553623693,0.7905587926829739,0.5628877955936812,0.280226548203782,-0.029810897688250668,-0.336936024751608,-0.6111448290923069,-0.8256490042248672,-0.9594929736144951,-0.9996011057844066,-0.9420551132101841,-0.792476841951085,-0.5654790561147303,-0.2832378717202264,0.026673696687629467,0.333979429138917,0.6086576778405213,0.8238742748349058,0.9586040448913948,0.9996848199254319,0.9431032919218906,0.7943870854121091,0.5680647467311586,0.2862464053757318,-0.023536232954118646,-0.3310195438666966,-0.6061645313795839,-0.8220914303767015,-0.9577056740270846,-0.9997586872842676,-0.9441421811730474,-0.7962895042503644,-0.5706448419742066,-0.28925211953658264,0.020398537391425064,0.3280563980894813,0.6036654142667051,0.8203004884110702,0.9567978698704157,0.9998227071333307,0.9451717707307128,0.798184079727241,0.5732193164302286,0.29225498459683513,-0.017260640905405175,-0.3250900209939213,-0.6011603511179051,-0.8185014665785871,-0.9558806413631561,-0.9998768788420318,-0.9461920504535466,-0.8000707931813853,-0.5757881447409429,-0.2952549709786086,0.014122574404028403,0.3221204417984948,0.5986493666077721,0.8166943825994136,0.9549539975399158,0.9999212018767856,0.9472030102919091,0.8019496260288834,0.5783513016036816,0.2982520491323346,-0.010984368796894167,-0.31914768975322033,-0.596132485469219,-0.8148792542731221,-0.9540179475280053,-0.9999556758010154,-0.9482046402879605,-0.8038205597634447,-0.5809087617716404,-0.3012461895372182,0.007846054994972068,0.31617179413936874,0.5936097324932398,0.8130560994785208,0.9530725005474241,0.9999803002751568,0.9491969305757587,0.8056835759565839,0.5834605000541262,0.3042373627012731,-0.0047076639102974095,-0.31319278426917446,-0.5910811325286653,-0.811224936173504,-0.9521176659107179,-0.9999950750566616,-0.950179871381357,-0.8075386562578029,-0.58600649131677,-0.30722553916178263,0.0015692264556667226,0.3102106894855472,0.5885467104819188,0.8093857823947705,0.9511534530228996,1.0],"sin":[-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.9001,-99.8002,-99.7003,-99.6004,-99.500496,-99.4006,-99.3007,-99.2008,-99.1009,-99.001,-98.9011,-98.8012,-98.7013,-98.6014,-98.501495,-98.401596,-98.3017,-98.2018,-98.1019,-98.002,-97.9021,-97.8022,-97.7023,-97.602394,-97.502495,-97.402596,-97.3027,-97.2028,-97.1029,-97.003,-96.9031,-96.8032,-96.7033,-96.60339,-96.503494,-96.403595,-96.303696,-96.2038,-96.1039,-96.004,-95.9041,-95.8042,-95.70429,-95.60439,-95.50449,-95.404594,-95.304695,-95.204796,-95.1049,-95.005,-94.9051,-94.80519,-94.70529,-94.60539,-94.50549,-94.405594,-94.305695,-94.205795,-94.105896,-94.006,-93.9061,-93.80619,-93.70629,-93.60639,-93.50649,-93.40659,-93.306694,-93.206795,-93.106895,-93.006996,-92.90709,-92.80719,-92.70729,-92.60739,-92.50749,-92.40759,-92.30769,-92.207794,-92.107895,-92.007996,-91.90809,-91.80819,-91.70829,-91.60839,-91.50849,-91.40859,-91.30869,-91.20879,-91.108894,-91.00899,-90.90909,-90.80919,-90.70929,-90.60939,-90.50949,-90.40959,-90.30969,-90.20979,-90.10989,-90.00999,-89.91009,-89.81019,-89.71029,-89.61039,-89.51049,-89.41059,-89.31069,-89.21079,-89.110886,-89.01099,-88.91109,-88.81119,-88.71129,-88.61139,-88.51149,-88.41159,-88.31169,-88.21179,-88.111885,-88.011986,-87.91209,-87.81219,-87.71229,-87.61239,-87.51249,-87.41259,-87.31269,-87.21278,-87.112885,-87.012985,-86.913086,-86.81319,-86.71329,-86.61339,-86.51349,-86.41359,-86.31368,-86.21378,-86.113884,-86.013985,-85.914085,-85.814186,-85.71429,-85.61439,-85.51449,-85.41459,-85.31468,-85.21478,-85.11488,-85.014984,-84.915085,-84.815186,-84.71529,-84.61539,-84.51549,-84.41558,-84.31568,-84.21578,-84.11588,-84.01598,-83.916084,-83.816185,-83.716286,-83.61639,-83.51649,-83.41658,-83.31668,-83.21678,-83.11688,-83.01698,-82.91708,-82.817184,-82.717285,-82.617386,-82.51748,-82.41758,-82.31768,-82.21778,-82.11788,-82.01798,-81.91808,-81.818184,-81.718285,-81.618385,-81.51848,-81.41858,-81.31868,-81.21878,-81.11888,-81.01898,-80.91908,-80.81918,-80.719284,-80.61938,-80.51948,-80.41958,-80.31968,-80.21978,-80.11988,-80.01998,-79.92008,-79.82018,-79.72028,-79.62038,-79.52048,-79.42058,-79.32068,-79.22078,-79.12088,-79.02098,-78.92108,-78.82118,-78.721275,-78.621376,-78.52148,-78.42158,-78.32168,-78.22178,-78.12188,-78.02198,-77.92208,-77.822174,-77.722275,-77.622375,-77.52248,-77.42258,-77.32268,-77.22278,-77.12288,-77.02298,-76.92308,-76.82317,-76.723274,-76.623375,-76.523476,-76.42358,-76.32368,-76.22378,-76.12388,-76.02398,-75.92407,-75.82417,-75.72427,-75.624374,-75.524475,-75.424576,-75.32468,-75.22478,-75.12488,-75.02498,-74.92507,-74.82517,-74.72527,-74.625374,-74.525475,-74.425575,-74.325676,-74.22578,-74.12588,-74.02597,-73.92607,-73.82617,-73.72627,-73.62637,-73.526474,-73.426575,-73.326675,-73.226776,-73.12688,-73.02697,-72.92707,-72.82717,-72.72727,-72.62737,-72.52747,-72.427574,-72.327675,-72.227776,-72.12787,-72.02797,-71.92807,-71.82817,-71.72827,-71.62837,-71.52847,-71.42857,-71.328674,-71.228775,-71.12887,-71.02897,-70.92907,-70.82917,-70.72927,-70.62937,-70.52947,-70.42957,-70.32967,-70.22977,-70.12987,-70.02997,-69.93007,-69.83017,-69.73027,-69.63037,-69.53047,-69.43057,-69.330666,-69.23077,-69.13087,-69.03097,-68.93107,-68.83117,-68.73127,-68.63137,-68.53147,-68.43157,-68.331665,-68.231766,-68.13187,-68.03197,-67.93207,-67.83217,-67.73227,-67.63237,-67.53247,-67.43256,-67.332664,-67.232765,-67.132866,-67.03297,-66.93307,-66.83317,-66.73327,-66.63337,-66.53347,-66.43356,-66.333664,-66.233765,-66.133865,-66.033966,-65.93407,-65.83417,-65.73427,-65.63437,-65.53446,-65.43456,-65.33466,-65.234764,-65.134865,-65.034966,-64.93507,-64.83517,-64.73527,-64.63537,-64.53546,-64.43556,-64.33566,-64.23576,-64.135864,-64.035965,-63.936066,-63.836163,-63.736263,-63.636364,-63.536465,-63.43656,-63.336662,-63.236763,-63.136864,-63.036964,-62.93706,-62.837162,-62.737263,-62.637363,-62.537464,-62.43756,-62.33766,-62.237762,-62.137863,-62.037964,-61.93806,-61.83816,-61.738262,-61.638363,-61.53846,-61.43856,-61.33866,-61.23876,-61.138863,-61.03896,-60.93906,-60.83916,-60.73926,-60.639362,-60.53946,-60.43956,-60.33966,-60.23976,-60.13986,-60.03996,-59.94006,-59.84016,-59.74026,-59.640358,-59.54046,-59.44056,-59.34066,-59.24076,-59.140858,-59.04096,-58.94106,-58.84116,-58.74126,-58.641357,-58.54146,-58.44156,-58.34166,-58.241756,-58.141857,-58.041958,-57.94206,-57.84216,-57.742256,-57.642357,-57.542458,-57.44256,-57.34266,-57.242756,-57.142857,-57.042957,-56.943058,-56.84316,-56.743256,-56.643356,-56.543457,-56.443558,-56.343655,-56.243755,-56.143856,-56.043957,-55.944057,-55.844154,-55.744255,-55.644356,-55.544456,-55.444557,-55.344654,-55.244755,-55.144855,-55.044956,-54.945053,-54.845154,-54.745255,-54.645355,-54.545456,-54.445553,-54.345654,-54.245754,-54.145855,-54.045956,-53.946053,-53.846153,-53.746254,-53.646355,-53.546455,-53.446552,-53.346653,-53.246754,-53.146854,-53.04695,-52.947052,-52.847153,-52.747253,-52.647354,-52.54745,-52.44755,-52.347652,-52.247753,-52.147854,-52.04795,-51.94805,-51.848152,-51.748253,-51.64835,-51.54845,-51.44855,-51.34865,-51.248753,-51.14885,-51.04895,-50.94905,-50.84915,-50.749252,-50.64935,-50.54945,-50.44955,-50.34965,-50.249752,-50.14985,-50.04995,-49.95005,-49.85015,-49.750248,-49.65035,-49.55045,-49.45055,-49.35065,-49.250748,-49.15085,-49.05095,-48.95105,-48.85115,-48.751247,-48.65135,-48.55145,-48.45155,-48.35165,-48.251747,-48.151848,-48.05195,-47.95205,-47.852146,-47.752247,-47.652348,-47.55245,-47.45255,-47.352646,-47.252747,-47.152847,-47.052948,-46.95305,-46.853146,-46.753246,-46.653347,-46.553448,-46.453545,-46.353645,-46.253746,-46.153847,-46.053947,-45.954044,-45.854145,-45.754246,-45.654346,-45.554447,-45.454544,-45.354645,-45.254745,-45.154846,-45.054947,-44.955044,-44.855145,-44.755245,-44.655346,-44.555443,-44.455544,-44.355644,-44.255745,-44.155846,-44.055943,-43.956043,-43.856144,-43.756245,-43.656345,-43.556442,-43.456543,-43.356644,-43.256744,-43.15684,-43.056942,-42.957043,-42.857143,-42.757244,-42.65734,-42.55744,-42.457542,-42.357643,-42.257744,-42.15784,-42.05794,-41.958042,-41.858143,-41.758244,-41.65834,-41.55844,-41.45854,-41.358643,-41.25874,-41.15884,-41.05894,-40.95904,-40.859142,-40.75924,-40.65934,-40.55944,-40.45954,-40.359642,-40.25974,-40.15984,-40.05994,-39.96004,-39.86014,-39.76024,-39.66034,-39.56044,-39.46054,-39.360638,-39.26074,-39.16084,-39.06094,-38.96104,-38.861137,-38.76124,-38.66134,-38.56144,-38.46154,-38.361637,-38.261738,-38.16184,-38.06194,-37.962036,-37.862137,-37.762238,-37.66234,-37.56244,-37.462536,-37.362637,-37.262737,-37.162838,-37.06294,-36.963036,-36.863136,-36.763237,-36.663338,-36.56344,-36.463535,-36.363636,-36.263737,-36.163837,-36.063934,-35.964035,-35.864136,-35.764236,-35.664337,-35.564434,-35.464535,-35.364635,-35.264736,-35.164837,-35.064934,-34.965034,-34.865135,-34.765236,-34.665333,-34.565434,-34.465534,-34.365635,-34.265736,-34.165833,-34.065933,-33.966034,-33.866135,-33.766235,-33.666332,-33.566433,-33.466534,-33.366634,-33.266735,-33.166832,-33.066933,-32.967033,-32.867134,-32.76723,-32.66733,-32.567432,-32.467533,-32.367634,-32.26773,-32.16783,-32.067932,-31.968033,-31.868132,-31.768232,-31.668331,-31.568432,-31.46853,-31.368631,-31.268732,-31.16883,-31.068932,-30.96903,-30.869131,-30.76923,-30.66933,-30.569431,-30.46953,-30.36963,-30.26973,-30.16983,-30.06993,-29.97003,-29.87013,-29.77023,-29.67033,-29.570429,-29.47053,-29.37063,-29.27073,-29.17083,-29.070929,-28.97103,-28.871128,-28.771229,-28.67133,-28.571428,-28.471529,-28.371628,-28.271729,-28.171827,-28.071928,-27.972029,-27.872128,-27.772228,-27.672327,-27.572428,-27.472527,-27.372627,-27.272728,-27.172827,-27.072927,-26.973026,-26.873127,-26.773228,-26.673326,-26.573427,-26.473526,-26.373627,-26.273726,-26.173826,-26.073927,-25.974026,-25.874126,-25.774225,-25.674326,-25.574425,-25.474525,-25.374626,-25.274725,-25.174826,-25.074924,-24.975025,-24.875124,-24.775225,-24.675325,-24.575424,-24.475525,-24.375624,-24.275724,-24.175825,-24.075924,-23.976025,-23.876123,-23.776224,-23.676323,-23.576424,-23.476524,-23.376623,-23.276724,-23.176823,-23.076923,-22.977022,-22.877123,-22.777224,-22.677322,-22.577423,-22.477522,-22.377623,-22.277721,-22.177822,-22.077923,-21.978022,-21.878122,-21.778221,-21.678322,-21.57842,-21.478521,-21.378622,-21.27872,-21.178822,-21.07892,-20.979021,-20.879122,-20.77922,-20.679321,-20.57942,-20.47952,-20.37962,-20.27972,-20.179821,-20.07992,-19.98002,-19.88012,-19.78022,-19.680319,-19.58042,-19.48052,-19.38062,-19.28072,-19.180819,-19.08092,-18.981018,-18.881119,-18.78122,-18.681318,-18.581419,-18.481518,-18.381618,-18.28172,-18.181818,-18.081919,-17.982018,-17.882118,-17.782217,-17.682318,-17.582418,-17.482517,-17.382618,-17.282717,-17.182817,-17.082916,-16.983017,-16.883118,-16.783216,-16.683317,-16.583416,-16.483517,-16.383615,-16.283716,-16.183817,-16.083916,-15.984016,-15.884116,-15.784216,-15.684316,-15.584415,-15.484515,-15.384615,-15.284716,-15.184815,-15.084915,-14.985015,-14.885115,-14.785214,-14.685315,-14.585415,-14.485515,-14.385614,-14.285714,-14.185814,-14.085914,-13.986014,-13.886114,-13.786214,-13.686314,-13.586413,-13.486513,-13.386614,-13.286714,-13.186813,-13.086913,-12.987013,-12.887113,-12.787212,-12.687313,-12.587413,-12.487513,-12.387612,-12.287712,-12.187812,-12.087913,-11.988012,-11.888112,-11.788212,-11.688312,-11.588411,-11.488511,-11.388612,-11.288712,-11.188811,-11.088911,-10.989011,-10.889111,-10.78921,-10.689311,-10.589411,-10.489511,-10.38961,-10.28971,-10.18981,-10.0899105,-9.99001,-9.89011,-9.79021,-9.69031,-9.590409,-9.490509,-9.39061,-9.2907095,-9.190809,-9.090909,-8.991009,-8.8911085,-8.791209,-8.691309,-8.591409,-8.4915085,-8.391608,-8.291708,-8.191808,-8.091908,-7.992008,-7.892108,-7.7922077,-7.6923075,-7.5924077,-7.4925075,-7.392607,-7.2927074,-7.192807,-7.092907,-6.993007,-6.893107,-6.7932067,-6.693307,-6.5934067,-6.4935064,-6.393606,-6.2937064,-6.193806,-6.093906,-5.994006,-5.894106,-5.7942057,-5.694306,-5.5944057,-5.4945054,-5.394605,-5.2947054,-5.194805,-5.094905,-4.995005,-4.895105,-4.7952046,-4.695305,-4.5954046,-4.4955044,-4.3956046,-4.2957044,-4.195804,-4.095904,-3.996004,-3.8961039,-3.7962039,-3.6963036,-3.5964036,-3.4965036,-3.3966033,-3.2967033,-3.196803,-3.096903,-2.997003,-2.8971028,-2.7972028,-2.6973026,-2.5974026,-2.4975026,-2.3976023,-2.2977023,-2.1978023,-2.097902,-1.998002,-1.8981019,-1.7982018,-1.6983017,-1.5984015,-1.4985015,-1.3986014,-1.2987013,-1.1988012,-1.0989012,-0.999001,-0.8991009,-0.7992008,-0.6993007,-0.5994006,-0.4995005,-0.3996004,-0.2997003,-0.1998002,-0.0999001,0.0,0.0999001,0.1998002,0.2997003,0.3996004,0.4995005,0.5994006,0.6993007,0.7992008,0.8991009,0.999001,1.0989012,1.1988012,1.2987013,1.3986014,1.4985015,1.5984015,1.6983017,1.7982018,1.8981019,1.998002,2.097902,2.1978023,2.2977023,2.3976023,2.4975026,2.5974026,2.6973026,2.7972028,2.8971028,2.997003,3.096903,3.196803,3.2967033,3.3966033,3.4965036,3.5964036,3.6963036,3.7962039,3.8961039,3.996004,4.095904,4.195804,4.2957044,4.3956046,4.4955044,4.5954046,4.695305,4.7952046,4.895105,4.995005,5.094905,5.194805,5.2947054,5.394605,5.4945054,5.5944057,5.694306,5.7942057,5.894106,5.994006,6.093906,6.193806,6.2937064,6.393606,6.4935064,6.5934067,6.693307,6.7932067,6.893107,6.993007,7.092907,7.192807,7.2927074,7.392607,7.4925075,7.5924077,7.6923075,7.7922077,7.892108,7.992008,8.091908,8.191808,8.291708,8.391608,8.4915085,8.591409,8.691309,8.791209,8.8911085,8.991009,9.090909,9.190809,9.2907095,9.39061,9.490509,9.590409,9.69031,9.79021,9.89011,9.99001,10.0899105,10.18981,10.28971,10.38961,10.489511,10.589411,10.689311,10.78921,10.889111,10.989011,11.088911,11.188811,11.288712,11.388612,11.488511,11.588411,11.688312,11.788212,11.888112,11.988012,12.087913,12.187812,12.287712,12.387612,12.487513,12.587413,12.687313,12.787212,12.887113,12.987013,13.086913,13.186813,13.286714,13.386614,13.486513,13.586413,13.686314,13.786214,13.886114,13.986014,14.085914,14.185814,14.285714,14.385614,14.485515,14.585415,14.685315,14.785214,14.885115,14.985015,15.084915,15.184815,15.284716,15.384615,15.484515,15.584415,15.684316,15.784216,15.884116,15.984016,16.083916,16.183817,16.283716,16.383615,16.483517,16.583416,16.683317,16.783216,16.883118,16.983017,17.082916,17.182817,17.282717,17.382618,17.482517,17.582418,17.682318,17.782217,17.882118,17.982018,18.081919,18.181818,18.28172,18.381618,18.481518,18.581419,18.681318,18.78122,18.881119,18.981018,19.08092,19.180819,19.28072,19.38062,19.48052,19.58042,19.680319,19.78022,19.88012,19.98002,20.07992,20.179821,20.27972,20.37962,20.47952,20.57942,20.679321,20.77922,20.879122,20.979021,21.07892,21.178822,21.27872,21.378622,21.478521,21.57842,21.678322,21.778221,21.878122,21.978022,22.077923,22.177822,22.277721,22.377623,22.477522,22.577423,22.677322,22.777224,22.877123,22.977022,23.076923,23.176823,23.276724,23.376623,23.476524,23.576424,23.676323,23.776224,23.876123,23.976025,24.075924,24.175825,24.275724,24.375624,24.475525,24.575424,24.675325,24.775225,24.875124,24.975025,25.074924,25.174826,25.274725,25.374626,25.474525,25.574425,25.674326,25.774225,25.874126,25.974026,26.073927,26.173826,26.273726,26.373627,26.473526,26.573427,26.673326,26.773228,26.873127,26.973026,27.072927,27.172827,27.272728,27.372627,27.472527,27.572428,27.672327,27.772228,27.872128,27.972029,28.071928,28.171827,28.271729,28.371628,28.471529,28.571428,28.67133,28.771229,28.871128,28.97103,29.070929,29.17083,29.27073,29.37063,29.47053,29.570429,29.67033,29.77023,29.87013,29.97003,30.06993,30.16983,30.26973,30.36963,30.46953,30.569431,30.66933,30.76923,30.869131,30.96903,31.068932,31.16883,31.268732,31.368631,31.46853,31.568432,31.668331,31.768232,31.868132,31.968033,32.067932,32.16783,32.26773,32.367634,32.467533,32.567432,32.66733,32.76723,32.867134,32.967033,33.066933,33.166832,33.266735,33.366634,33.466534,33.566433,33.666332,33.766235,33.866135,33.966034,34.065933,34.165833,34.265736,34.365635,34.465534,34.565434,34.665333,34.765236,34.865135,34.965034,35.064934,35.164837,35.264736,35.364635,35.464535,35.564434,35.664337,35.764236,35.864136,35.964035,36.063934,36.163837,36.263737,36.363636,36.463535,36.56344,36.663338,36.763237,36.863136,36.963036,37.06294,37.162838,37.262737,37.362637,37.462536,37.56244,37.66234,37.762238,37.862137,37.962036,38.06194,38.16184,38.261738,38.361637,38.46154,38.56144,38.66134,38.76124,38.861137,38.96104,39.06094,39.16084,39.26074,39.360638,39.46054,39.56044,39.66034,39.76024,39.86014,39.96004,40.05994,40.15984,40.25974,40.359642,40.45954,40.55944,40.65934,40.75924,40.859142,40.95904,41.05894,41.15884,41.25874,41.358643,41.45854,41.55844,41.65834,41.758244,41.858143,41.958042,42.05794,42.15784,42.257744,42.357643,42.457542,42.55744,42.65734,42.757244,42.857143,42.957043,43.056942,43.15684,43.256744,43.356644,43.456543,43.556442,43.656345,43.756245,43.856144,43.956043,44.055943,44.155846,44.255745,44.355644,44.455544,44.555443,44.655346,44.755245,44.855145,44.955044,45.054947,45.154846,45.254745,45.354645,45.454544,45.554447,45.654346,45.754246,45.854145,45.954044,46.053947,46.153847,46.253746,46.353645,46.453545,46.553448,46.653347,46.753246,46.853146,46.95305,47.052948,47.152847,47.252747,47.352646,47.45255,47.55245,47.652348,47.752247,47.852146,47.95205,48.05195,48.151848,48.251747,48.35165,48.45155,48.55145,48.65135,48.751247,48.85115,48.95105,49.05095,49.15085,49.250748,49.35065,49.45055,49.55045,49.65035,49.750248,49.85015,49.95005,50.04995,50.14985,50.249752,50.34965,50.44955,50.54945,50.64935,50.749252,50.84915,50.94905,51.04895,51.14885,51.248753,51.34865,51.44855,51.54845,51.64835,51.748253,51.848152,51.94805,52.04795,52.147854,52.247753,52.347652,52.44755,52.54745,52.647354,52.747253,52.847153,52.947052,53.04695,53.146854,53.246754,53.346653,53.446552,53.546455,53.646355,53.746254,53.846153,53.946053,54.045956,54.145855,54.245754,54.345654,54.445553,54.545456,54.645355,54.745255,54.845154,54.945053,55.044956,55.144855,55.244755,55.344654,55.444557,55.544456,55.644356,55.744255,55.844154,55.944057,56.043957,56.143856,56.243755,56.343655,56.443558,56.543457,56.643356,56.743256,56.84316,56.943058,57.042957,57.142857,57.242756,57.34266,57.44256,57.542458,57.642357,57.742256,57.84216,57.94206,58.041958,58.141857,58.241756,58.34166,58.44156,58.54146,58.641357,58.74126,58.84116,58.94106,59.04096,59.140858,59.24076,59.34066,59.44056,59.54046,59.640358,59.74026,59.84016,59.94006,60.03996,60.13986,60.23976,60.33966,60.43956,60.53946,60.639362,60.73926,60.83916,60.93906,61.03896,61.138863,61.23876,61.33866,61.43856,61.53846,61.638363,61.738262,61.83816,61.93806,62.037964,62.137863,62.237762,62.33766,62.43756,62.537464,62.637363,62.737263,62.837162,62.93706,63.036964,63.136864,63.236763,63.336662,63.43656,63.536465,63.636364,63.736263,63.836163,63.936066,64.035965,64.135864,64.23576,64.33566,64.43556,64.53546,64.63537,64.73527,64.83517,64.93507,65.034966,65.134865,65.234764,65.33466,65.43456,65.53446,65.63437,65.73427,65.83417,65.93407,66.033966,66.133865,66.233765,66.333664,66.43356,66.53347,66.63337,66.73327,66.83317,66.93307,67.03297,67.132866,67.232765,67.332664,67.43256,67.53247,67.63237,67.73227,67.83217,67.93207,68.03197,68.13187,68.231766,68.331665,68.43157,68.53147,68.63137,68.73127,68.83117,68.93107,69.03097,69.13087,69.23077,69.330666,69.43057,69.53047,69.63037,69.73027,69.83017,69.93007,70.02997,70.12987,70.22977,70.32967,70.42957,70.52947,70.62937,70.72927,70.82917,70.92907,71.02897,71.12887,71.228775,71.328674,71.42857,71.52847,71.62837,71.72827,71.82817,71.92807,72.02797,72.12787,72.227776,72.327675,72.427574,72.52747,72.62737,72.72727,72.82717,72.92707,73.02697,73.12688,73.226776,73.326675,73.426575,73.526474,73.62637,73.72627,73.82617,73.92607,74.02597,74.12588,74.22578,74.325676,74.425575,74.525475,74.625374,74.72527,74.82517,74.92507,75.02498,75.12488,75.22478,75.32468,75.424576,75.524475,75.624374,75.72427,75.82417,75.92407,76.02398,76.12388,76.22378,76.32368,76.42358,76.523476,76.623375,76.723274,76.82317,76.92308,77.02298,77.12288,77.22278,77.32268,77.42258,77.52248,77.622375,77.722275,77.822174,77.92208,78.02198,78.12188,78.22178,78.32168,78.42158,78.52148,78.621376,78.721275,78.82118,78.92108,79.02098,79.12088,79.22078,79.32068,79.42058,79.52048,79.62038,79.72028,79.82018,79.92008,80.01998,80.11988,80.21978,80.31968,80.41958,80.51948,80.61938,80.719284,80.81918,80.91908,81.01898,81.11888,81.21878,81.31868,81.41858,81.51848,81.618385,81.718285,81.818184,81.91808,82.01798,82.11788,82.21778,82.31768,82.41758,82.51748,82.617386,82.717285,82.817184,82.91708,83.01698,83.11688,83.21678,83.31668,83.41658,83.51649,83.61639,83.716286,83.816185,83.916084,84.01598,84.11588,84.21578,84.31568,84.41558,84.51549,84.61539,84.71529,84.815186,84.915085,85.014984,85.11488,85.21478,85.31468,85.41459,85.51449,85.61439,85.71429,85.814186,85.914085,86.013985,86.113884,86.21378,86.31368,86.41359,86.51349,86.61339,86.71329,86.81319,86.913086,87.012985,87.112885,87.21278,87.31269,87.41259,87.51249,87.61239,87.71229,87.81219,87.91209,88.011986,88.111885,88.21179,88.31169,88.41159,88.51149,88.61139,88.71129,88.81119,88.91109,89.01099,89.110886,89.21079,89.31069,89.41059,89.51049,89.61039,89.71029,89.81019,89.91009,90.00999,90.10989,90.20979,90.30969,90.40959,90.50949,90.60939,90.70929,90.80919,90.90909,91.00899,91.108894,91.20879,91.30869,91.40859,91.50849,91.60839,91.70829,91.80819,91.90809,92.007996,92.107895,92.207794,92.30769,92.40759,92.50749,92.60739,92.70729,92.80719,92.90709,93.006996,93.106895,93.206795,93.306694,93.40659,93.50649,93.60639,93.70629,93.80619,93.9061,94.006,94.105896,94.205795,94.305695,94.405594,94.50549,94.60539,94.70529,94.80519,94.9051,95.005,95.1049,95.204796,95.304695,95.404594,95.50449,95.60439,95.70429,95.8042,95.9041,96.004,96.1039,96.2038,96.303696,96.403595,96.503494,96.60339,96.7033,96.8032,96.9031,97.003,97.1029,97.2028,97.3027,97.402596,97.502495,97.602394,97.7023,97.8022,97.9021,98.002,98.1019,98.2018,98.3017,98.401596,98.501495,98.6014,98.7013,98.8012,98.9011,99.001,99.1009,99.2008,99.3007,99.4006,99.500496,99.6004,99.7003,99.8002,99.9001,100.0],"cos":[1.0,0.95115423,0.80938876,0.5885529,0.31022033,0.0015579486,-0.30723387,-0.5860115,-0.80754083,-0.95018023,-0.99999505,-0.9521189,-0.81122875,-0.5910884,-0.31320378,-0.0046977988,0.30424434,0.5834644,0.8056849,0.9491968,0.9999803,0.9530741,0.8130607,0.59361815,0.31616136,0.007837603,-0.30125183,-0.5809115,-0.8038211,-0.9482041,-0.99995565,-0.95401996,-0.81488466,-0.596142,-0.31913862,-0.01097733,0.29825634,0.5783529,0.80194926,0.947202,0.99992114,0.9549564,0.8167006,0.5986408,0.3221127,0.0141169485,-0.29525793,-0.5757886,-0.80006963,-0.9461906,-0.9998768,-0.95588344,-0.8184947,-0.60115296,-0.32508364,-0.017256428,0.2922566,0.5732186,0.798182,0.9451698,0.99982256,0.95680106,0.82029456,0.60365915,0.32805136,0.020395737,-0.28925237,-0.57064295,-0.7962866,-0.9441398,-0.9997585,-0.95770234,-0.8220863,-0.6061594,-0.33101583,-0.023534844,0.28624532,0.5680617,0.7943833,0.9431004,0.9996845,0.9586012,0.82386994,0.60865366,0.33397707,0.026673721,-0.2832354,-0.56547487,-0.7924722,-0.9420517,-0.9996014,-0.95949054,-0.8256455,-0.6111419,-0.33693498,-0.029812334,0.28022274,0.5628824,0.7905533,0.9409937,0.99950784,0.9603704,0.8274129,0.6136242,0.3398896,0.032950655,-0.2772073,-0.56028444,-0.78862655,-0.9399347,-0.99940443,-0.9612408,-0.8291722,-0.61610043,-0.34284085,-0.036088645,0.2741891,0.5576809,0.786692,0.9388582,0.9992912,0.9621018,0.83092326,0.61857057,0.34578872,0.039226286,-0.27116823,-0.5550719,-0.78476465,-0.9377725,-0.99916804,-0.96295327,-0.83266616,-0.62103456,-0.3487332,-0.04236354,0.26814467,0.5524774,0.7828147,0.9366776,0.99903506,0.96379524,0.83440083,0.6234925,0.35167423,0.04550037,-0.26511848,-0.5498575,-0.780857,-0.9355734,-0.99889225,-0.96462774,-0.8361273,-0.62594426,-0.35461178,-0.048636757,0.2621128,0.5472322,0.7788917,0.93446004,0.99873954,0.9654507,0.83784544,0.62838984,0.35754585,0.051772665,-0.25908142,-0.5446015,-0.77691865,-0.9333374,-0.998577,-0.9662641,-0.8395554,-0.6308292,-0.36047637,-0.05488413,0.2560475,0.5419654,0.774938,0.9322056,0.9984047,0.967068,0.8412571,0.6332624,0.36340338,0.058018986,-0.25301105,-0.53932405,-0.77294964,-0.9310646,-0.9982225,-0.9678624,-0.84295046,-0.6356893,-0.3663045,-0.06115327,0.24997209,0.5366773,0.77095366,0.9299144,0.9980304,0.96864724,0.8446355,0.63811,0.3692243,0.064286955,-0.24693067,-0.53402525,-0.7689501,-0.92875504,-0.9978285,-0.9694226,-0.8463122,-0.64050597,-0.37214047,-0.067420006,0.24388683,0.531368,0.766939,0.92758656,0.99761677,0.9701883,0.8479679,0.6429141,0.375053,0.070552394,-0.24084058,-0.5287055,-0.7649203,-0.9264089,-0.9973952,-0.97094446,-0.84962803,-0.6453159,-0.3779618,-0.07368408,0.23779196,0.52603775,0.7628941,0.9252221,0.99716383,0.9716854,0.85127974,0.6477113,0.3808669,0.07681505,-0.23474099,-0.5233648,-0.7608603,-0.92402625,-0.9969226,-0.9724225,-0.8529231,-0.6501003,-0.38376823,-0.07994525,0.2316877,0.52068675,0.75881904,0.9228212,0.9966735,0.97315,0.854558,0.6524829,0.38666576,0.08307467,-0.22863212,-0.5180035,-0.7567703,-0.9216071,-0.9964127,-0.9738679,-0.8561845,-0.65485907,-0.3895595,-0.08620327,0.2255743,0.5153152,0.75471413,0.9203933,0.9961421,0.97457623,0.8578025,0.6572288,0.3924494,0.089331016,-0.22251426,-0.51262176,-0.7526505,-0.9191611,-0.9958616,-0.9752749,-0.85941213,-0.65959203,-0.39533544,-0.09245788,0.21945202,0.50992334,0.7505953,0.9179198,0.9955713,0.975964,0.86101323,0.6619488,0.39821756,0.09558384,-0.21638761,-0.5072405,-0.74851686,-0.9166695,-0.99527127,-0.97664344,-0.86260587,-0.664299,-0.40109578,-0.09870885,0.21332107,0.50453204,0.74643105,0.9154101,0.9949614,0.9773133,0.86419004,0.66664267,0.40397,0.1018329,-0.21027587,-0.5018186,-0.7443379,-0.9141418,-0.99464166,-0.9779735,-0.86576563,-0.66897976,-0.4068403,-0.104955934,0.20720518,0.49910024,0.74223745,0.9128644,0.99431217,0.97862405,0.8673327,0.6713103,0.40970653,0.10805411,-0.20413242,-0.49637696,-0.74012965,-0.911578,-0.99397284,-0.979265,-0.86889124,-0.6736342,-0.41256875,-0.11117505,0.20105767,0.49364877,0.7380146,0.9102826,0.99362373,0.97989625,0.8704353,0.6759426,0.415416,0.11430681,-0.19798094,-0.49091572,-0.7358922,-0.9089782,-0.9932648,-0.9805155,-0.8719767,-0.6782532,-0.41827008,-0.11742552,0.19490226,0.48817784,0.73376256,0.90766495,0.99289614,0.98112744,0.8735095,0.6805571,0.42112002,0.12053119,-0.19182165,-0.48543513,-0.73162574,-0.9063427,-0.9925191,-0.98172975,-0.87503374,-0.6828543,-0.4239658,-0.12364756,0.18873915,0.48268765,0.72948164,0.9050166,0.9921309,0.98232234,0.8765493,0.6851448,0.4267966,0.12676272,-0.18565479,-0.4799354,-0.7273304,-0.9036765,-0.99173284,-0.98290527,-0.8780562,-0.6874285,-0.429634,-0.12987663,0.1825686,0.47717842,0.7251802,0.9023275,0.991325,0.98347855,0.8795545,0.6896968,0.4324672,0.13298926,-0.17948061,-0.47441673,-0.72301465,-0.9009696,-0.9909075,-0.98404205,-0.8810441,-0.69196695,-0.43529612,-0.13610058,0.17639084,0.47166094,0.72084194,0.89960283,0.9904801,0.9845959,0.88251936,0.69423026,0.43812075,0.13921055,-0.17329934,-0.46888995,-0.7186622,-0.8982272,-0.99004304,-0.985138,-0.88399166,-0.6964868,-0.44094107,-0.14231916,0.17021795,0.46611434,0.7164753,0.8968427,0.9895962,0.9856725,0.8854552,0.6987364,0.44375703,0.14542635,-0.16712306,-0.4633341,-0.7142814,-0.89544934,-0.9891413,-0.9861972,-0.88690996,-0.7009792,-0.44656864,-0.14852026,0.16402654,0.46054935,0.71208036,0.8940472,0.988675,0.9867122,0.88835603,0.703215,0.4493651,0.15162458,-0.1609284,-0.45776004,-0.70987236,-0.8926416,-0.9881989,-0.9872175,-0.88979334,-0.7054439,-0.45216787,-0.15472738,0.15782867,0.4549662,0.7076574,0.8912219,0.9877131,0.9877131,0.8912219,0.7076574,0.4549662,0.15782867,-0.15472738,-0.45216787,-0.7054439,-0.88979334,-0.9872175,-0.9881989,-0.8926416,-0.70987236,-0.45776004,-0.1609284,0.15162458,0.4493651,0.703215,0.88835603,0.9867122,0.988675,0.8940472,0.71208036,0.46054935,0.16402654,-0.14852026,-0.44656864,-0.7009792,-0.88690996,-0.9861972,-0.9891413,-0.89544934,-0.7142814,-0.4633341,-0.16712306,0.14542635,0.44375703,0.6987364,0.8854552,0.9856725,0.9895962,0.8968427,0.7164753,0.46611434,0.17021795,-0.14231916,-0.44094107,-0.6964868,-0.88399166,-0.985138,-0.99004304,-0.8982272,-0.7186622,-0.46888995,-0.17329934,0.13921055,0.43812075,0.69423026,0.88251936,0.9845959,0.9904801,0.89960283,0.72084194,0.47166094,0.17639084,-0.13610058,-0.43529612,-0.69196695,-0.8810441,-0.98404205,-0.9909075,-0.9009696,-0.72301465,-0.47441673,-0.17948061,0.13298926,0.4324672,0.6896968,0.8795545,0.98347855,0.991325,0.9023275,0.7251802,0.47717842,0.1825686,-0.12987663,-0.429634,-0.6874285,-0.8780562,-0.98290527,-0.99173284,-0.9036765,-0.7273304,-0.4799354,-0.18565479,0.12676272,0.4267966,0.6851448,0.8765493,0.98232234,0.9921309,0.9050166,0.72948164,0.48268765,0.18873915,-0.12364756,-0.4239658,-0.6828543,-0.87503374,-0.98172975,-0.9925191,-0.9063427,-0.73162574,-0.48543513,-0.19182165,0.12053119,0.42112002,0.6805571,0.8735095,0.98112744,0.99289614,0.90766495,0.73376256,0.48817784,0.19490226,-0.11742552,-0.41827008,-0.6782532,-0.8719767,-0.9805155,-0.9932648,-0.9089782,-0.7358922,-0.49091572,-0.19798094,0.11430681,0.415416,0.6759426,0.8704353,0.97989625,0.99362373,0.9102826,0.7380146,0.49364877,0.20104593,-0.11118697,-0.41255784,-0.6736253,-0.8688853,-0.979265,-0.99397284,-0.911578,-0.74012965,-0.49636656,-0.2041207,0.10806602,0.4096956,0.6713014,0.8673327,0.97862405,0.99431217,0.9128644,0.74223745,0.49908987,0.20719345,-0.10494401,-0.40682933,-0.6689709,-0.86576563,-0.9779735,-0.99464166,-0.9141418,-0.7443299,-0.5018082,-0.21026415,0.101820976,0.40395907,0.66664267,0.86419004,0.9773133,0.9949614,0.9154077,0.7464271,0.50452167,0.21333279,-0.09870289,-0.40109026,-0.66429454,-0.86260587,-0.97664344,-0.99527067,-0.9166671,-0.74850893,-0.50723016,-0.21639931,0.09557787,0.39821208,0.6619488,0.86101323,0.9759653,0.9955708,0.91791743,0.75058734,0.50993365,0.21945786,-0.092451915,-0.39532992,-0.65959203,-0.85941213,-0.97527623,-0.99586105,-0.9191563,-0.75265837,-0.5126321,-0.2225201,0.08932505,0.3924494,0.6572288,0.8578056,0.97457755,0.99614155,0.9203886,0.754722,0.5153203,0.22558014,-0.08620327,-0.3895595,-0.65485907,-0.8561876,-0.97386926,-0.9964117,-0.9216117,-0.7567782,-0.51800865,-0.22863796,0.08307467,0.38666576,0.65248746,0.8545611,0.9731514,0.9966725,0.9228258,0.758823,0.5206918,0.2316877,-0.07994525,-0.38376823,-0.6501048,-0.8529262,-0.9724253,-0.99692357,-0.9240285,-0.7608642,-0.5233699,-0.23474099,0.07681505,0.38087243,0.6477158,0.8512829,0.9716882,0.9971647,0.9252244,0.76289797,0.52603775,0.23779196,-0.07368408,-0.37796736,-0.6453204,-0.84963435,-0.9709416,-0.99739563,-0.92641115,-0.76492417,-0.5287055,-0.24084058,0.07055837,0.37505853,0.6429233,0.8479743,0.9701854,0.9976172,0.9275888,0.766939,0.531368,0.24388102,-0.06742598,-0.37214604,-0.6405152,-0.84630585,-0.9694211,-0.9978289,-0.9287573,-0.7689501,-0.53402525,-0.24692488,0.06429294,0.36923543,0.6381008,0.8446291,0.96864575,0.9980308,0.9299144,0.77095366,0.53667223,0.2499663,-0.061159253,-0.36631563,-0.6356801,-0.84294724,-0.96786094,-0.9982225,-0.9310646,-0.77294964,-0.539319,-0.25300524,0.058030948,0.3633922,0.63325316,0.8412538,0.9670665,0.9984047,0.9322056,0.7749342,0.5419604,0.2560417,-0.054896094,-0.3604652,-0.63082457,-0.83955216,-0.9662641,-0.998577,-0.9333374,-0.7769149,-0.5445965,-0.25906986,0.051760696,0.35754025,0.6283852,0.83784217,0.9654507,0.99873954,0.934459,0.7788879,0.5472247,0.26210123,-0.04862778,-0.35460618,-0.62593955,-0.8361256,-0.96462774,-0.99889207,-0.9355713,-0.7808514,-0.54985,-0.26513004,0.045491394,0.35166863,0.62349015,0.83440083,0.963796,0.99903494,0.9366755,0.7828091,0.5524674,0.26815334,-0.04235755,-0.34872758,-0.62103224,-0.83266616,-0.9629541,-0.9991678,-0.9377694,-0.7847572,-0.5550819,-0.27117687,0.0392203,0.34578592,0.61857057,0.8309249,0.9621026,0.99929094,0.9388551,0.7866994,0.55768836,0.27419487,-0.036085654,-0.34283805,-0.61610043,-0.82917386,-0.9612425,-0.99940413,-0.93993056,-0.78863204,-0.5602919,-0.27721304,0.03294766,0.3398896,0.61362654,0.8274163,0.9603721,0.99950755,0.9409978,0.79055876,0.5628874,0.2802256,-0.029812334,-0.33693498,-0.6111443,-0.8256489,-0.95949304,-0.99960107,-0.9420547,-0.79247767,-0.5654798,-0.2832383,0.026673721,0.33397987,0.60865843,0.82387507,0.95860374,0.9996848,0.9431034,0.7943869,0.56806415,0.28624675,-0.023536341,-0.3310201,-0.60616416,-0.8220914,-0.9577058,-0.9997587,-0.9441422,-0.7962893,-0.57064545,-0.28925237,0.020398732,0.32805702,0.6036651,0.8203005,0.956798,0.99982274,0.9451718,0.79818386,0.57321984,0.29225516,-0.01726092,-0.3250907,-0.6011601,-0.81850153,-0.9558808,-0.99987686,-0.946192,-0.8000705,-0.5757886,-0.29525506,0.01412294,0.3221198,0.5986492,0.8166945,0.9549542,0.9999212,0.947203,0.80194974,0.5783511,0.29825205,-0.010984071,-0.31914786,-0.5961324,-0.8148794,-0.95401794,-0.99995565,-0.9482046,-0.8038206,-0.5809085,-0.3012461,0.007845841,0.31617203,0.5936097,0.81305593,0.95307255,0.99998033,0.94919693,0.80568355,0.58346045,0.30423722,-0.0047075357,-0.31319275,-0.59108114,-0.811225,-0.9521176,-0.99999505,-0.9501799,-0.8075386,-0.5860065,-0.3072255,0.0015691838,0.31021073,0.58854675,0.8093858,0.95115346,1.0,0.95115346,0.8093858,0.58854675,0.31021073,0.0015691838,-0.3072255,-0.5860065,-0.8075386,-0.9501799,-0.99999505,-0.9521176,-0.811225,-0.59108114,-0.31319275,-0.0047075357,0.30423722,0.58346045,0.80568355,0.94919693,0.99998033,0.95307255,0.81305593,0.5936097,0.31617203,0.007845841,-0.3012461,-0.5809085,-0.8038206,-0.9482046,-0.99995565,-0.95401794,-0.8148794,-0.5961324,-0.31914786,-0.010984071,0.29825205,0.5783511,0.80194974,0.947203,0.9999212,0.9549542,0.8166945,0.5986492,0.3221198,0.01412294,-0.29525506,-0.5757886,-0.8000705,-0.946192,-0.99987686,-0.9558808,-0.81850153,-0.6011601,-0.3250907,-0.01726092,0.29225516,0.57321984,0.79818386,0.9451718,0.99982274,0.956798,0.8203005,0.6036651,0.32805702,0.020398732,-0.28925237,-0.57064545,-0.7962893,-0.9441422,-0.9997587,-0.9577058,-0.8220914,-0.60616416,-0.3310201,-0.023536341,0.28624675,0.56806415,0.7943869,0.9431034,0.9996848,0.95860374,0.82387507,0.60865843,0.33397987,0.026673721,-0.2832383,-0.5654798,-0.79247767,-0.9420547,-0.99960107,-0.95949304,-0.8256489,-0.6111443,-0.33693498,-0.029812334,0.2802256,0.5628874,0.79055876,0.9409978,0.99950755,0.9603721,0.8274163,0.61362654,0.3398896,0.03294766,-0.27721304,-0.5602919,-0.78863204,-0.93993056,-0.99940413,-0.9612425,-0.82917386,-0.61610043,-0.34283805,-0.036085654,0.27419487,0.55768836,0.7866994,0.9388551,0.99929094,0.9621026,0.8309249,0.61857057,0.34578592,0.0392203,-0.27117687,-0.5550819,-0.7847572,-0.9377694,-0.9991678,-0.9629541,-0.83266616,-0.62103224,-0.34872758,-0.04235755,0.26815334,0.5524674,0.7828091,0.9366755,0.99903494,0.963796,0.83440083,0.62349015,0.35166863,0.045491394,-0.26513004,-0.54985,-0.7808514,-0.9355713,-0.99889207,-0.96462774,-0.8361256,-0.62593955,-0.35460618,-0.04862778,0.26210123,0.5472247,0.7788879,0.934459,0.99873954,0.9654507,0.83784217,0.6283852,0.35754025,0.051760696,-0.25906986,-0.5445965,-0.7769149,-0.9333374,-0.998577,-0.9662641,-0.83955216,-0.63082457,-0.3604652,-0.054896094,0.2560417,0.5419604,0.7749342,0.9322056,0.9984047,0.9670665,0.8412538,0.63325316,0.3633922,0.058030948,-0.25300524,-0.539319,-0.77294964,-0.9310646,-0.9982225,-0.96786094,-0.84294724,-0.6356801,-0.36631563,-0.061159253,0.2499663,0.53667223,0.77095366,0.9299144,0.9980308,0.96864575,0.8446291,0.6381008,0.36923543,0.06429294,-0.24692488,-0.53402525,-0.7689501,-0.9287573,-0.9978289,-0.9694211,-0.84630585,-0.6405152,-0.37214604,-0.06742598,0.24388102,0.531368,0.766939,0.9275888,0.9976172,0.9701854,0.8479743,0.6429233,0.37505853,0.07055837,-0.24084058,-0.5287055,-0.76492417,-0.92641115,-0.99739563,-0.9709416,-0.84963435,-0.6453204,-0.37796736,-0.07368408,0.23779196,0.52603775,0.76289797,0.9252244,0.9971647,0.9716882,0.8512829,0.6477158,0.38087243,0.07681505,-0.23474099,-0.5233699,-0.7608642,-0.9240285,-0.99692357,-0.9724253,-0.8529262,-0.6501048,-0.38376823,-0.07994525,0.2316877,0.5206918,0.758823,0.9228258,0.9966725,0.9731514,0.8545611,0.65248746,0.38666576,0.08307467,-0.22863796,-0.51800865,-0.7567782,-0.9216117,-0.9964117,-0.97386926,-0.8561876,-0.65485907,-0.3895595,-0.08620327,0.22558014,0.5153203,0.754722,0.9203886,0.99614155,0.97457755,0.8578056,0.6572288,0.3924494,0.08932505,-0.2225201,-0.5126321,-0.75265837,-0.9191563,-0.99586105,-0.97527623,-0.85941213,-0.65959203,-0.39532992,-0.092451915,0.21945786,0.50993365,0.75058734,0.91791743,0.9955708,0.9759653,0.86101323,0.6619488,0.39821208,0.09557787,-0.21639931,-0.50723016,-0.74850893,-0.9166671,-0.99527067,-0.97664344,-0.86260587,-0.66429454,-0.40109026,-0.09870289,0.21333279,0.50452167,0.7464271,0.9154077,0.9949614,0.9773133,0.86419004,0.66664267,0.40395907,0.101820976,-0.21026415,-0.5018082,-0.7443299,-0.9141418,-0.99464166,-0.9779735,-0.86576563,-0.6689709,-0.40682933,-0.10494401,0.20719345,0.49908987,0.74223745,0.9128644,0.99431217,0.97862405,0.8673327,0.6713014,0.4096956,0.10806602,-0.2041207,-0.49636656,-0.74012965,-0.911578,-0.99397284,-0.979265,-0.8688853,-0.6736253,-0.41255784,-0.11118697,0.20104593,0.49364877,0.7380146,0.9102826,0.99362373,0.97989625,0.8704353,0.6759426,0.415416,0.11430681,-0.19798094,-0.49091572,-0.7358922,-0.9089782,-0.9932648,-0.9805155,-0.8719767,-0.6782532,-0.41827008,-0.11742552,0.19490226,0.48817784,0.73376256,0.90766495,0.99289614,0.98112744,0.8735095,0.6805571,0.42112002,0.12053119,-0.19182165,-0.48543513,-0.73162574,-0.9063427,-0.9925191,-0.98172975,-0.87503374,-0.6828543,-0.4239658,-0.12364756,0.18873915,0.48268765,0.72948164,0.9050166,0.9921309,0.98232234,0.8765493,0.6851448,0.4267966,0.12676272,-0.18565479,-0.4799354,-0.7273304,-0.9036765,-0.99173284,-0.98290527,-0.8780562,-0.6874285,-0.429634,-0.12987663,0.1825686,0.47717842,0.7251802,0.9023275,0.991325,0.98347855,0.8795545,0.6896968,0.4324672,0.13298926,-0.17948061,-0.47441673,-0.72301465,-0.9009696,-0.9909075,-0.98404205,-0.8810441,-0.69196695,-0.43529612,-0.13610058,0.17639084,0.47166094,0.72084194,0.89960283,0.9904801,0.9845959,0.88251936,0.69423026,0.43812075,0.13921055,-0.17329934,-0.46888995,-0.7186622,-0.8982272,-0.99004304,-0.985138,-0.88399166,-0.6964868,-0.44094107,-0.14231916,0.17021795,0.46611434,0.7164753,0.8968427,0.9895962,0.9856725,0.8854552,0.6987364,0.44375703,0.14542635,-0.16712306,-0.4633341,-0.7142814,-0.89544934,-0.9891413,-0.9861972,-0.88690996,-0.7009792,-0.44656864,-0.14852026,0.16402654,0.46054935,0.71208036,0.8940472,0.988675,0.9867122,0.88835603,0.703215,0.4493651,0.15162458,-0.1609284,-0.45776004,-0.70987236,-0.8926416,-0.9881989,-0.9872175,-0.88979334,-0.7054439,-0.45216787,-0.15472738,0.15782867,0.4549662,0.7076574,0.8912219,0.9877131,0.9877131,0.8912219,0.7076574,0.4549662,0.15782867,-0.15472738,-0.45216787,-0.7054439,-0.88979334,-0.9872175,-0.9881989,-0.8926416,-0.70987236,-0.45776004,-0.1609284,0.15162458,0.4493651,0.703215,0.88835603,0.9867122,0.988675,0.8940472,0.71208036,0.46054935,0.16402654,-0.14852026,-0.44656864,-0.7009792,-0.88690996,-0.9861972,-0.9891413,-0.89544934,-0.7142814,-0.4633341,-0.16712306,0.14542635,0.44375703,0.6987364,0.8854552,0.9856725,0.9895962,0.8968427,0.7164753,0.46611434,0.17021795,-0.14231916,-0.44094107,-0.6964868,-0.88399166,-0.985138,-0.99004304,-0.8982272,-0.7186622,-0.46888995,-0.17329934,0.13921055,0.43812075,0.69423026,0.88251936,0.9845959,0.9904801,0.89960283,0.72084194,0.47166094,0.17639084,-0.13610058,-0.43529612,-0.69196695,-0.8810441,-0.98404205,-0.9909075,-0.9009696,-0.72301465,-0.47441673,-0.17948061,0.13298926,0.4324672,0.6896968,0.8795545,0.98347855,0.991325,0.9023275,0.7251802,0.47717842,0.1825686,-0.12987663,-0.429634,-0.6874285,-0.8780562,-0.98290527,-0.99173284,-0.9036765,-0.7273304,-0.4799354,-0.18565479,0.12676272,0.4267966,0.6851448,0.8765493,0.98232234,0.9921309,0.9050166,0.72948164,0.48268765,0.18873915,-0.12364756,-0.4239658,-0.6828543,-0.87503374,-0.98172975,-0.9925191,-0.9063427,-0.73162574,-0.48543513,-0.19182165,0.12053119,0.42112002,0.6805571,0.8735095,0.98112744,0.99289614,0.90766495,0.73376256,0.48817784,0.19490226,-0.11742552,-0.41827008,-0.6782532,-0.8719767,-0.9805155,-0.9932648,-0.9089782,-0.7358922,-0.49091572,-0.19798094,0.11430681,0.415416,0.6759426,0.8704353,0.97989625,0.99362373,0.9102826,0.7380146,0.49364877,0.20105767,-0.11117505,-0.41256875,-0.6736342,-0.86889124,-0.979265,-0.99397284,-0.911578,-0.74012965,-0.49637696,-0.20413242,0.10805411,0.40970653,0.6713103,0.8673327,0.97862405,0.99431217,0.9128644,0.74223745,0.49910024,0.20720518,-0.104955934,-0.4068403,-0.66897976,-0.86576563,-0.9779735,-0.99464166,-0.9141418,-0.7443379,-0.5018186,-0.21027587,0.1018329,0.40397,0.66664267,0.86419004,0.9773133,0.9949614,0.9154101,0.74643105,0.50453204,0.21332107,-0.09870885,-0.40109578,-0.664299,-0.86260587,-0.97664344,-0.99527127,-0.9166695,-0.74851686,-0.5072405,-0.21638761,0.09558384,0.39821756,0.6619488,0.86101323,0.975964,0.9955713,0.9179198,0.7505953,0.50992334,0.21945202,-0.09245788,-0.39533544,-0.65959203,-0.85941213,-0.9752749,-0.9958616,-0.9191611,-0.7526505,-0.51262176,-0.22251426,0.089331016,0.3924494,0.6572288,0.8578025,0.97457623,0.9961421,0.9203933,0.75471413,0.5153152,0.2255743,-0.08620327,-0.3895595,-0.65485907,-0.8561845,-0.9738679,-0.9964127,-0.9216071,-0.7567703,-0.5180035,-0.22863212,0.08307467,0.38666576,0.6524829,0.854558,0.97315,0.9966735,0.9228212,0.75881904,0.52068675,0.2316877,-0.07994525,-0.38376823,-0.6501003,-0.8529231,-0.9724225,-0.9969226,-0.92402625,-0.7608603,-0.5233648,-0.23474099,0.07681505,0.3808669,0.6477113,0.85127974,0.9716854,0.99716383,0.9252221,0.7628941,0.52603775,0.23779196,-0.07368408,-0.3779618,-0.6453159,-0.84962803,-0.97094446,-0.9973952,-0.9264089,-0.7649203,-0.5287055,-0.24084058,0.070552394,0.375053,0.6429141,0.8479679,0.9701883,0.99761677,0.92758656,0.766939,0.531368,0.24388683,-0.067420006,-0.37214047,-0.64050597,-0.8463122,-0.9694226,-0.9978285,-0.92875504,-0.7689501,-0.53402525,-0.24693067,0.064286955,0.3692243,0.63811,0.8446355,0.96864724,0.9980304,0.9299144,0.77095366,0.5366773,0.24997209,-0.06115327,-0.3663045,-0.6356893,-0.84295046,-0.9678624,-0.9982225,-0.9310646,-0.77294964,-0.53932405,-0.25301105,0.058018986,0.36340338,0.6332624,0.8412571,0.967068,0.9984047,0.9322056,0.774938,0.5419654,0.2560475,-0.05488413,-0.36047637,-0.6308292,-0.8395554,-0.9662641,-0.998577,-0.9333374,-0.77691865,-0.5446015,-0.25908142,0.051772665,0.35754585,0.62838984,0.83784544,0.9654507,0.99873954,0.93446004,0.7788917,0.5472322,0.2621128,-0.048636757,-0.35461178,-0.62594426,-0.8361273,-0.96462774,-0.99889225,-0.9355734,-0.780857,-0.5498575,-0.26511848,0.04550037,0.35167423,0.6234925,0.83440083,0.96379524,0.99903506,0.9366776,0.7828147,0.5524774,0.26814467,-0.04236354,-0.3487332,-0.62103456,-0.83266616,-0.96295327,-0.99916804,-0.9377725,-0.78476465,-0.5550719,-0.27116823,0.039226286,0.34578872,0.61857057,0.83092326,0.9621018,0.9992912,0.9388582,0.786692,0.5576809,0.2741891,-0.036088645,-0.34284085,-0.61610043,-0.8291722,-0.9612408,-0.99940443,-0.9399347,-0.78862655,-0.56028444,-0.2772073,0.032950655,0.3398896,0.6136242,0.8274129,0.9603704,0.99950784,0.9409937,0.7905533,0.5628824,0.28022274,-0.029812334,-0.33693498,-0.6111419,-0.8256455,-0.95949054,-0.9996014,-0.9420517,-0.7924722,-0.56547487,-0.2832354,0.026673721,0.33397707,0.60865366,0.82386994,0.9586012,0.9996845,0.9431004,0.7943833,0.5680617,0.28624532,-0.023534844,-0.33101583,-0.6061594,-0.8220863,-0.95770234,-0.9997585,-0.9441398,-0.7962866,-0.57064295,-0.28925237,0.020395737,0.32805136,0.60365915,0.82029456,0.95680106,0.99982256,0.9451698,0.798182,0.5732186,0.2922566,-0.017256428,-0.32508364,-0.60115296,-0.8184947,-0.95588344,-0.9998768,-0.9461906,-0.80006963,-0.5757886,-0.29525793,0.0141169485,0.3221127,0.5986408,0.8167006,0.9549564,0.99992114,0.947202,0.80194926,0.5783529,0.29825634,-0.01097733,-0.31913862,-0.596142,-0.81488466,-0.95401996,-0.99995565,-0.9482041,-0.8038211,-0.5809115,-0.30125183,0.007837603,0.31616136,0.59361815,0.8130607,0.9530741,0.9999803,0.9491968,0.8056849,0.5834644,0.30424434,-0.0046977988,-0.31320378,-0.5910884,-0.81122875,-0.9521189,-0.99999505,-0.95018023,-0.80754083,-0.5860115,-0.30723387,0.0015579486,0.31022033,0.5885529,0.80938876,0.95115423,1.0],"sin":[-0.0,0.3087161,0.58727324,0.80845875,0.9506647,0.9999988,0.95163405,0.81030273,0.5898117,0.31170106,0.0031398619,-0.30572808,-0.58472896,-0.80660677,-0.94968593,-0.999989,-0.95259404,-0.81213874,-0.59234434,-0.31468296,-0.0062796925,0.30273703,0.58217895,0.80474687,0.94870543,0.9999693,0.9535446,0.8139667,0.59487116,0.31766173,0.009419462,-0.29974303,-0.57962316,-0.80287904,-0.9477081,-0.99993974,-0.95448583,-0.81578666,-0.59739214,-0.3206374,-0.012559137,0.29674605,0.57706165,0.8010176,0.94670135,0.99990034,0.9554176,0.81759864,0.59990716,0.32360992,0.01569869,-0.29374617,-0.5745141,-0.799134,-0.94568527,-0.9998511,-0.95633996,-0.81940246,-0.60241634,-0.3265792,-0.018838087,0.29074338,0.5719413,0.7972425,0.9446599,0.999792,0.95725286,0.8211983,0.60491955,0.32954532,0.0219773,-0.28776067,-0.5693629,-0.7953432,-0.9436252,-0.999723,-0.95815635,-0.82298595,-0.6074168,-0.33250815,-0.025116295,0.2847522,0.56677884,0.793436,0.9425812,0.9996442,0.9590504,0.82476556,0.60990804,0.33546773,0.028231082,-0.28174093,-0.5641892,-0.791521,-0.9415279,-0.9995555,-0.959935,-0.826537,-0.6123933,-0.338424,-0.031369552,0.27872688,0.561594,0.7895982,0.94046533,0.999457,0.9608101,0.8283003,0.6148725,0.34135437,0.034507714,-0.27571005,-0.5589933,-0.78766763,-0.9393935,-0.9993486,-0.9616758,-0.8300554,-0.61734563,-0.34430397,-0.037645537,0.27269053,0.55638707,0.7857293,0.9383124,0.9992303,0.962532,0.83180237,0.6197939,0.34725013,0.040782988,-0.2696683,-0.5537753,-0.7837832,-0.93722206,-0.99910223,-0.96337867,-0.83352786,-0.6222549,-0.3501929,-0.043920036,0.26664346,0.55115813,0.78182936,0.9361225,0.9989643,0.9642158,0.8352585,0.6247098,0.35313222,0.047056653,-0.26361597,-0.5485355,-0.7798678,-0.93501365,-0.99881655,-0.9650372,-0.8369808,-0.62715846,-0.35606804,-0.050192803,0.26058587,0.5459075,0.7778986,0.9338956,0.9986589,0.9658555,0.83869493,0.629601,0.35900038,0.05332846,-0.2575532,-0.5432741,-0.7759217,-0.93276834,-0.9984927,-0.9666642,-0.84040076,-0.6320373,-0.36192915,-0.05646359,0.254518,0.54063535,0.77393717,0.9316319,0.99831545,0.9674634,0.84209836,0.63446736,0.36485437,0.059598166,-0.25148028,-0.5379912,-0.771945,-0.930495,-0.9981284,-0.968253,-0.84378755,-0.63689125,-0.36777598,-0.06273215,0.24844009,0.5353418,0.7699452,0.9293403,0.9979315,0.9690331,0.8454685,0.63930875,0.37069398,0.06586552,-0.24539743,-0.5326871,-0.76795316,-0.9281764,-0.9977247,-0.9698037,-0.8471411,-0.64172,-0.37360832,-0.06899824,0.24235238,0.53004754,0.7659383,0.9270034,0.99750805,0.97056466,0.84880537,0.6441249,0.37651896,0.07213028,-0.23930493,-0.52738243,-0.76391584,-0.9258212,-0.9972816,-0.9713161,-0.85046124,-0.6465235,-0.3794259,-0.07526161,0.2362784,0.5247121,0.7618859,0.92462987,0.99704534,0.97205794,0.8521087,0.6489157,0.3823291,0.07839219,-0.23322628,-0.5220366,-0.7598484,-0.9234294,-0.99679923,-0.97279024,-0.85374784,-0.6513015,-0.38522854,-0.081498116,0.23017186,0.519356,0.75780344,0.92221993,0.99654335,0.9735129,0.8553785,0.65368086,0.38812417,0.08462713,-0.22711517,-0.5166702,-0.755751,-0.9210013,-0.9962776,-0.97422594,-0.85700077,-0.6560538,-0.39099392,-0.08775531,0.22405624,0.5139794,0.75369114,0.9197736,0.996002,0.97492945,0.8586145,0.65842026,0.3938819,0.09088263,-0.2209951,-0.51128346,-0.7516238,-0.91853684,-0.9957166,-0.9756233,-0.86021984,-0.66076225,-0.39676598,-0.09400905,0.21793178,0.50858253,0.74954903,0.917291,0.9954214,0.9763075,0.86180454,0.66311574,0.39964616,0.09713454,-0.21486631,-0.50587654,-0.7474669,-0.9160361,-0.99511635,-0.9769822,-0.86339295,-0.66546273,-0.40252241,-0.10025907,0.21179873,0.5031656,0.7453774,0.9147722,0.9948015,0.9776421,0.8649729,0.66780317,0.4053947,0.103382625,-0.20872906,-0.50044966,-0.7432806,-0.9134993,-0.99447685,-0.97829753,-0.86654425,-0.670137,-0.40826297,-0.10650515,0.20565732,0.49772882,0.7411764,0.9122174,0.99414504,0.9789433,0.8681071,0.6724642,0.41112724,0.10962663,-0.20258357,-0.49500307,-0.73906493,-0.91092646,-0.9938008,-0.9795794,-0.8696614,-0.6747848,-0.41398743,-0.11274702,0.19950782,0.49228287,0.7369543,0.90963155,0.9934455,0.9802059,0.87120706,0.6770987,0.41684356,0.11586631,-0.19644184,-0.48954737,-0.7348283,-0.9083227,-0.9930817,-0.9808227,-0.8727442,-0.679406,-0.41969556,-0.11898445,0.19336219,0.48680708,0.73269504,0.9070049,0.9927095,0.9814298,0.8742727,0.68170655,0.42254344,0.12208953,-0.19028063,-0.484062,-0.7305546,-0.9056782,-0.9923262,-0.98202723,-0.87579256,-0.6840004,-0.4253763,-0.1252053,0.1871972,0.48131213,0.7284069,0.90434766,0.99193305,0.98261505,0.87730384,0.68628746,0.42821583,0.12831983,-0.18411192,-0.4785575,-0.7262521,-0.9030031,-0.9915302,-0.9831931,-0.8788064,-0.6885591,-0.43105114,-0.13143311,0.18102482,0.47579816,0.7240983,0.90164965,0.9911175,0.9837615,0.8803004,0.6908327,0.4338822,0.13454509,-0.17793594,-0.47303414,-0.7219292,-0.90028733,-0.990695,-0.9843202,-0.88177997,-0.69309944,-0.436709,-0.13765574,0.17484531,0.47027603,0.71975297,0.8989161,0.9902628,0.9848692,0.8832566,0.6953594,0.43953145,0.14076503,-0.17176476,-0.4675027,-0.71756965,-0.89753604,-0.98982084,-0.98540646,-0.8847245,-0.69761246,-0.44234958,-0.14387293,0.16867071,0.4647248,0.71537924,0.89614713,0.9893691,0.98593605,0.8861837,0.69985867,0.44516337,0.14696756,-0.16557501,-0.46194232,-0.71318173,-0.8947494,-0.98890936,-0.9864559,-0.8876341,-0.70209795,-0.44797277,-0.1500726,0.16247767,0.45915526,0.71097726,0.8933482,0.9884381,0.9869661,0.8890758,0.7043303,0.45076704,0.15317616,-0.15937874,-0.45636368,-0.70876575,-0.89193285,-0.9879572,-0.9874665,-0.8905087,-0.7065557,-0.4535676,-0.15627822,0.15627822,0.4535676,0.7065557,0.8905087,0.9874665,0.9879572,0.89193285,0.70876575,0.45636368,0.15937874,-0.15317616,-0.45076704,-0.7043303,-0.8890758,-0.9869661,-0.9884381,-0.8933482,-0.71097726,-0.45915526,-0.16247767,0.1500726,0.44797277,0.70209795,0.8876341,0.9864559,0.98890936,0.8947494,0.71318173,0.46194232,0.16557501,-0.14696756,-0.44516337,-0.69985867,-0.8861837,-0.98593605,-0.9893691,-0.89614713,-0.71537924,-0.4647248,-0.16867071,0.14387293,0.44234958,0.69761246,0.8847245,0.98540646,0.98982084,0.89753604,0.71756965,0.4675027,0.17176476,-0.14076503,-0.43953145,-0.6953594,-0.8832566,-0.9848692,-0.9902628,-0.8989161,-0.71975297,-0.47027603,-0.17484531,0.13765574,0.436709,0.69309944,0.88177997,0.9843202,0.990695,0.90028733,0.7219292,0.47303414,0.17793594,-0.13454509,-0.4338822,-0.6908327,-0.8803004,-0.9837615,-0.9911175,-0.90164965,-0.7240983,-0.47579816,-0.18102482,0.13143311,0.43105114,0.6885591,0.8788064,0.9831931,0.9915302,0.9030031,0.7262521,0.4785575,0.18411192,-0.12831983,-0.42821583,-0.68628746,-0.87730384,-0.98261505,-0.99193305,-0.90434766,-0.7284069,-0.48131213,-0.1871972,0.1252053,0.4253763,0.6840004,0.87579256,0.98202723,0.9923262,0.9056782,0.7305546,0.484062,0.19028063,-0.12208953,-0.42254344,-0.68170655,-0.8742727,-0.9814298,-0.9927095,-0.9070049,-0.73269504,-0.48680708,-0.19336219,0.11898445,0.41969556,0.679406,0.8727442,0.9808227,0.9930817,0.9083227,0.7348283,0.48954737,0.19644184,-0.11586631,-0.41684356,-0.6770987,-0.87120706,-0.9802059,-0.9934455,-0.90963155,-0.7369543,-0.49228287,-0.19950782,0.11274702,0.41398743,0.6747848,0.8696614,0.97958183,0.9937995,0.9109314,0.73907304,0.49501348,0.20258357,-0.10962663,-0.41112724,-0.6724642,-0.86811304,-0.97894573,-0.9941437,-0.91222227,-0.7411845,-0.49772882,-0.20565732,0.10650515,0.40826297,0.670137,0.8665502,0.9783,0.9944781,0.9135042,0.74328864,0.50044966,0.20872906,-0.103382625,-0.4053947,-0.66781205,-0.8649789,-0.9776446,-0.9948027,-0.91477704,-0.7453774,-0.5031656,-0.21179873,0.10025907,0.4025279,0.6654672,0.863399,0.9769796,0.99511695,0.9160385,0.7474709,0.50587654,0.21486631,-0.097140506,-0.39965168,-0.66312474,-0.8618106,-0.97630495,-0.99542195,-0.91729337,-0.74954903,-0.50858253,-0.21792594,0.09401501,0.3967715,0.66077125,0.86021376,0.975622,0.99571717,0.91853917,0.7516238,0.51128346,0.22098926,-0.0908886,-0.3938929,-0.65841126,-0.85860837,-0.9749281,-0.99600255,-0.9197736,-0.75369114,-0.51397425,-0.2240504,0.08776128,0.39100495,0.6560448,0.85699767,0.9742246,0.9962776,0.9210013,0.755751,0.5166651,0.22710933,-0.08463907,-0.3881131,-0.6536718,-0.8553754,-0.9735115,-0.99654335,-0.92221993,-0.7577995,-0.5193509,-0.23016603,0.08151006,0.38521746,0.651297,0.8537447,0.97279024,0.99679923,0.9234294,0.75984454,0.5220315,0.23321463,-0.07838024,-0.38232356,-0.6489111,-0.8521056,-0.97205794,-0.99704534,-0.9246276,-0.761882,-0.524707,-0.23626676,0.07524966,0.37942037,0.64651895,0.85046124,0.9713161,0.9972816,0.9258189,0.763912,0.52737224,0.23931655,-0.0721243,-0.37651342,-0.64412034,-0.84880537,-0.97056466,-0.99750763,-0.9270011,-0.7659306,-0.5300374,-0.242364,0.068992265,0.37360275,0.64172,0.8471411,0.9698052,0.9977243,0.9281742,0.7679455,0.53269726,0.24540325,-0.06585954,-0.3706884,-0.63930875,-0.8454685,-0.9690346,-0.99793106,-0.9293359,-0.76995283,-0.53535193,-0.24844588,0.06272617,0.36777598,0.63689125,0.84379077,0.96825457,0.998128,0.9304907,0.7719526,0.5379963,0.25148606,-0.059598166,-0.36485437,-0.63446736,-0.8421016,-0.9674649,-0.9983148,-0.9316363,-0.77394474,-0.54064035,-0.25452378,0.05646359,0.36192915,0.63204193,0.84040403,0.96666574,0.99849206,0.93277264,0.77592546,0.5432791,0.2575532,-0.05332846,-0.35900038,-0.62960565,-0.8386982,-0.9658586,-0.9986595,-0.93389773,-0.77790236,-0.5459125,-0.26058587,0.050192803,0.35607085,0.6271632,0.83698577,0.9650404,0.99881697,0.93501574,0.7798716,0.548538,0.26361597,-0.047059644,-0.35313782,-0.6247168,-0.83526343,-0.96421266,-0.9989647,-0.93612456,-0.7818312,-0.55115813,-0.26664057,0.043923028,0.35019854,0.62226194,0.8335345,0.9633762,0.99910253,0.93722415,0.78378505,0.5537753,0.26966545,-0.040788975,-0.34725857,-0.6198033,-0.8317957,-0.96252954,-0.99923056,-0.9383134,-0.7857293,-0.55638456,-0.27268764,0.037651524,0.3443124,0.6173362,0.8300504,0.96167415,0.9993487,0.93939453,0.78766763,0.55899084,0.2757043,-0.0345167,-0.34136564,-0.6148654,-0.82829523,-0.96080846,-0.99945706,-0.94046533,-0.7895964,-0.56158906,-0.2787211,0.031378537,0.3384127,0.6123862,0.8265336,0.9599342,0.9995555,0.9415279,0.79151917,0.56418425,0.2817323,-0.028243061,-0.33545926,-0.60990095,-0.82476217,-0.9590496,-0.9996442,-0.9425802,-0.79343235,-0.56677145,-0.28474358,0.025104314,0.33249968,0.60741204,0.8229843,0.95815593,0.99972296,0.9436237,0.7953396,0.5693555,0.2877492,-0.021966815,-0.32953826,-0.604916,-0.82119656,-0.95725286,-0.9997919,-0.9446579,-0.797238,-0.57193273,-0.2907534,0.0188291,0.32657355,0.60241395,0.8194016,0.9563404,0.99985105,0.9456828,0.7991286,0.5745043,0.29375476,-0.0156912,-0.32360566,-0.59990597,-0.81759864,-0.95541847,-0.9999003,-0.9466989,-0.8010113,-0.57707024,-0.2967532,0.012553146,0.32063457,0.59739155,0.815788,0.95448714,0.9999397,0.947705,0.8028862,0.5796305,0.29974946,-0.009414967,-0.31766033,-0.59487176,-0.8139689,-0.9535464,-0.99996924,-0.94870186,-0.80475307,-0.5821856,-0.30274203,0.0062766965,0.3146826,0.59234613,0.81214154,0.9525963,0.9999889,0.94968957,0.8066121,0.58473414,0.30573198,-0.0031383638,-0.31170213,-0.5898147,-0.8103064,-0.95163673,-0.99999875,-0.9506678,-0.8084632,-0.5872773,-0.30871847,0.0,0.30871847,0.5872773,0.8084632,0.9506678,0.99999875,0.95163673,0.8103064,0.5898147,0.31170213,0.0031383638,-0.30573198,-0.58473414,-0.8066121,-0.94968957,-0.9999889,-0.9525963,-0.81214154,-0.59234613,-0.3146826,-0.0062766965,0.30274203,0.5821856,0.80475307,0.94870186,0.99996924,0.9535464,0.8139689,0.59487176,0.31766033,0.009414967,-0.29974946,-0.5796305,-0.8028862,-0.947705,-0.9999397,-0.95448714,-0.815788,-0.59739155,-0.32063457,-0.012553146,0.2967532,0.57707024,0.8010113,0.9466989,0.9999003,0.95541847,0.81759864,0.59990597,0.32360566,0.0156912,-0.29375476,-0.5745043,-0.7991286,-0.9456828,-0.99985105,-0.9563404,-0.8194016,-0.60241395,-0.32657355,-0.0188291,0.2907534,0.57193273,0.797238,0.9446579,0.9997919,0.95725286,0.82119656,0.604916,0.32953826,0.021966815,-0.2877492,-0.5693555,-0.7953396,-0.9436237,-0.99972296,-0.95815593,-0.8229843,-0.60741204,-0.33249968,-0.025104314,0.28474358,0.56677145,0.79343235,0.9425802,0.9996442,0.9590496,0.82476217,0.60990095,0.33545926,0.028243061,-0.2817323,-0.56418425,-0.79151917,-0.9415279,-0.9995555,-0.9599342,-0.8265336,-0.6123862,-0.3384127,-0.031378537,0.2787211,0.56158906,0.7895964,0.94046533,0.99945706,0.96080846,0.82829523,0.6148654,0.34136564,0.0345167,-0.2757043,-0.55899084,-0.78766763,-0.93939453,-0.9993487,-0.96167415,-0.8300504,-0.6173362,-0.3443124,-0.037651524,0.27268764,0.55638456,0.7857293,0.9383134,0.99923056,0.96252954,0.8317957,0.6198033,0.34725857,0.040788975,-0.26966545,-0.5537753,-0.78378505,-0.93722415,-0.99910253,-0.9633762,-0.8335345,-0.62226194,-0.35019854,-0.043923028,0.26664057,0.55115813,0.7818312,0.93612456,0.9989647,0.96421266,0.83526343,0.6247168,0.35313782,0.047059644,-0.26361597,-0.548538,-0.7798716,-0.93501574,-0.99881697,-0.9650404,-0.83698577,-0.6271632,-0.35607085,-0.050192803,0.26058587,0.5459125,0.77790236,0.93389773,0.9986595,0.9658586,0.8386982,0.62960565,0.35900038,0.05332846,-0.2575532,-0.5432791,-0.77592546,-0.93277264,-0.99849206,-0.96666574,-0.84040403,-0.63204193,-0.36192915,-0.05646359,0.25452378,0.54064035,0.77394474,0.9316363,0.9983148,0.9674649,0.8421016,0.63446736,0.36485437,0.059598166,-0.25148606,-0.5379963,-0.7719526,-0.9304907,-0.998128,-0.96825457,-0.84379077,-0.63689125,-0.36777598,-0.06272617,0.24844588,0.53535193,0.76995283,0.9293359,0.99793106,0.9690346,0.8454685,0.63930875,0.3706884,0.06585954,-0.24540325,-0.53269726,-0.7679455,-0.9281742,-0.9977243,-0.9698052,-0.8471411,-0.64172,-0.37360275,-0.068992265,0.242364,0.5300374,0.7659306,0.9270011,0.99750763,0.97056466,0.84880537,0.64412034,0.37651342,0.0721243,-0.23931655,-0.52737224,-0.763912,-0.9258189,-0.9972816,-0.9713161,-0.85046124,-0.64651895,-0.37942037,-0.07524966,0.23626676,0.524707,0.761882,0.9246276,0.99704534,0.97205794,0.8521056,0.6489111,0.38232356,0.07838024,-0.23321463,-0.5220315,-0.75984454,-0.9234294,-0.99679923,-0.97279024,-0.8537447,-0.651297,-0.38521746,-0.08151006,0.23016603,0.5193509,0.7577995,0.92221993,0.99654335,0.9735115,0.8553754,0.6536718,0.3881131,0.08463907,-0.22710933,-0.5166651,-0.755751,-0.9210013,-0.9962776,-0.9742246,-0.85699767,-0.6560448,-0.39100495,-0.08776128,0.2240504,0.51397425,0.75369114,0.9197736,0.99600255,0.9749281,0.85860837,0.65841126,0.3938929,0.0908886,-0.22098926,-0.51128346,-0.7516238,-0.91853917,-0.99571717,-0.975622,-0.86021376,-0.66077125,-0.3967715,-0.09401501,0.21792594,0.50858253,0.74954903,0.91729337,0.99542195,0.97630495,0.8618106,0.66312474,0.39965168,0.097140506,-0.21486631,-0.50587654,-0.7474709,-0.9160385,-0.99511695,-0.9769796,-0.863399,-0.6654672,-0.4025279,-0.10025907,0.21179873,0.5031656,0.7453774,0.91477704,0.9948027,0.9776446,0.8649789,0.66781205,0.4053947,0.103382625,-0.20872906,-0.50044966,-0.74328864,-0.9135042,-0.9944781,-0.9783,-0.8665502,-0.670137,-0.40826297,-0.10650515,0.20565732,0.49772882,0.7411845,0.91222227,0.9941437,0.97894573,0.86811304,0.6724642,0.41112724,0.10962663,-0.20258357,-0.49501348,-0.73907304,-0.9109314,-0.9937995,-0.97958183,-0.8696614,-0.6747848,-0.41398743,-0.11274702,0.19950782,0.49228287,0.7369543,0.90963155,0.9934455,0.9802059,0.87120706,0.6770987,0.41684356,0.11586631,-0.19644184,-0.48954737,-0.7348283,-0.9083227,-0.9930817,-0.9808227,-0.8727442,-0.679406,-0.41969556,-0.11898445,0.19336219,0.48680708,0.73269504,0.9070049,0.9927095,0.9814298,0.8742727,0.68170655,0.42254344,0.12208953,-0.19028063,-0.484062,-0.7305546,-0.9056782,-0.9923262,-0.98202723,-0.87579256,-0.6840004,-0.4253763,-0.1252053,0.1871972,0.48131213,0.7284069,0.90434766,0.99193305,0.98261505,0.87730384,0.68628746,0.42821583,0.12831983,-0.18411192,-0.4785575,-0.7262521,-0.9030031,-0.9915302,-0.9831931,-0.8788064,-0.6885591,-0.43105114,-0.13143311,0.18102482,0.47579816,0.7240983,0.90164965,0.9911175,0.9837615,0.8803004,0.6908327,0.4338822,0.13454509,-0.17793594,-0.47303414,-0.7219292,-0.90028733,-0.990695,-0.9843202,-0.88177997,-0.69309944,-0.436709,-0.13765574,0.17484531,0.47027603,0.71975297,0.8989161,0.9902628,0.9848692,0.8832566,0.6953594,0.43953145,0.14076503,-0.17176476,-0.4675027,-0.71756965,-0.89753604,-0.98982084,-0.98540646,-0.8847245,-0.69761246,-0.44234958,-0.14387293,0.16867071,0.4647248,0.71537924,0.89614713,0.9893691,0.98593605,0.8861837,0.69985867,0.44516337,0.14696756,-0.16557501,-0.46194232,-0.71318173,-0.8947494,-0.98890936,-0.9864559,-0.8876341,-0.70209795,-0.44797277,-0.1500726,0.16247767,0.45915526,0.71097726,0.8933482,0.9884381,0.9869661,0.8890758,0.7043303,0.45076704,0.15317616,-0.15937874,-0.45636368,-0.70876575,-0.89193285,-0.9879572,-0.9874665,-0.8905087,-0.7065557,-0.4535676,-0.15627822,0.15627822,0.4535676,0.7065557,0.8905087,0.9874665,0.9879572,0.89193285,0.70876575,0.45636368,0.15937874,-0.15317616,-0.45076704,-0.7043303,-0.8890758,-0.9869661,-0.9884381,-0.8933482,-0.71097726,-0.45915526,-0.16247767,0.1500726,0.44797277,0.70209795,0.8876341,0.9864559,0.98890936,0.8947494,0.71318173,0.46194232,0.16557501,-0.14696756,-0.44516337,-0.69985867,-0.8861837,-0.98593605,-0.9893691,-0.89614713,-0.71537924,-0.4647248,-0.16867071,0.14387293,0.44234958,0.69761246,0.8847245,0.98540646,0.98982084,0.89753604,0.71756965,0.4675027,0.17176476,-0.14076503,-0.43953145,-0.6953594,-0.8832566,-0.9848692,-0.9902628,-0.8989161,-0.71975297,-0.47027603,-0.17484531,0.13765574,0.436709,0.69309944,0.88177997,0.9843202,0.990695,0.90028733,0.7219292,0.47303414,0.17793594,-0.13454509,-0.4338822,-0.6908327,-0.8803004,-0.9837615,-0.9911175,-0.90164965,-0.7240983,-0.47579816,-0.18102482,0.13143311,0.43105114,0.6885591,0.8788064,0.9831931,0.9915302,0.9030031,0.7262521,0.4785575,0.18411192,-0.12831983,-0.42821583,-0.68628746,-0.87730384,-0.98261505,-0.99193305,-0.90434766,-0.7284069,-0.48131213,-0.1871972,0.1252053,0.4253763,0.6840004,0.87579256,0.98202723,0.9923262,0.9056782,0.7305546,0.484062,0.19028063,-0.12208953,-0.42254344,-0.68170655,-0.8742727,-0.9814298,-0.9927095,-0.9070049,-0.73269504,-0.48680708,-0.19336219,0.11898445,0.41969556,0.679406,0.8727442,0.9808227,0.9930817,0.9083227,0.7348283,0.48954737,0.19644184,-0.11586631,-0.41684356,-0.6770987,-0.87120706,-0.9802059,-0.9934455,-0.90963155,-0.7369543,-0.49228287,-0.19950782,0.11274702,0.41398743,0.6747848,0.8696614,0.9795794,0.9938008,0.91092646,0.73906493,0.49500307,0.20258357,-0.10962663,-0.41112724,-0.6724642,-0.8681071,-0.9789433,-0.99414504,-0.9122174,-0.7411764,-0.49772882,-0.20565732,0.10650515,0.40826297,0.670137,0.86654425,0.97829753,0.99447685,0.9134993,0.7432806,0.50044966,0.20872906,-0.103382625,-0.4053947,-0.66780317,-0.8649729,-0.9776421,-0.9948015,-0.9147722,-0.7453774,-0.5031656,-0.21179873,0.10025907,0.40252241,0.66546273,0.86339295,0.9769822,0.99511635,0.9160361,0.7474669,0.50587654,0.21486631,-0.09713454,-0.39964616,-0.66311574,-0.86180454,-0.9763075,-0.9954214,-0.917291,-0.74954903,-0.50858253,-0.21793178,0.09400905,0.39676598,0.66076225,0.86021984,0.9756233,0.9957166,0.91853684,0.7516238,0.51128346,0.2209951,-0.09088263,-0.3938819,-0.65842026,-0.8586145,-0.97492945,-0.996002,-0.9197736,-0.75369114,-0.5139794,-0.22405624,0.08775531,0.39099392,0.6560538,0.85700077,0.97422594,0.9962776,0.9210013,0.755751,0.5166702,0.22711517,-0.08462713,-0.38812417,-0.65368086,-0.8553785,-0.9735129,-0.99654335,-0.92221993,-0.75780344,-0.519356,-0.23017186,0.081498116,0.38522854,0.6513015,0.85374784,0.97279024,0.99679923,0.9234294,0.7598484,0.5220366,0.23322628,-0.07839219,-0.3823291,-0.6489157,-0.8521087,-0.97205794,-0.99704534,-0.92462987,-0.7618859,-0.5247121,-0.2362784,0.07526161,0.3794259,0.6465235,0.85046124,0.9713161,0.9972816,0.9258212,0.76391584,0.52738243,0.23930493,-0.07213028,-0.37651896,-0.6441249,-0.84880537,-0.97056466,-0.99750805,-0.9270034,-0.7659383,-0.53004754,-0.24235238,0.06899824,0.37360832,0.64172,0.8471411,0.9698037,0.9977247,0.9281764,0.76795316,0.5326871,0.24539743,-0.06586552,-0.37069398,-0.63930875,-0.8454685,-0.9690331,-0.9979315,-0.9293403,-0.7699452,-0.5353418,-0.24844009,0.06273215,0.36777598,0.63689125,0.84378755,0.968253,0.9981284,0.930495,0.771945,0.5379912,0.25148028,-0.059598166,-0.36485437,-0.63446736,-0.84209836,-0.9674634,-0.99831545,-0.9316319,-0.77393717,-0.54063535,-0.254518,0.05646359,0.36192915,0.6320373,0.84040076,0.9666642,0.9984927,0.93276834,0.7759217,0.5432741,0.2575532,-0.05332846,-0.35900038,-0.629601,-0.83869493,-0.9658555,-0.9986589,-0.9338956,-0.7778986,-0.5459075,-0.26058587,0.050192803,0.35606804,0.62715846,0.8369808,0.9650372,0.99881655,0.93501365,0.7798678,0.5485355,0.26361597,-0.047056653,-0.35313222,-0.6247098,-0.8352585,-0.9642158,-0.9989643,-0.9361225,-0.78182936,-0.55115813,-0.26664346,0.043920036,0.3501929,0.6222549,0.83352786,0.96337867,0.99910223,0.93722206,0.7837832,0.5537753,0.2696683,-0.040782988,-0.34725013,-0.6197939,-0.83180237,-0.962532,-0.9992303,-0.9383124,-0.7857293,-0.55638707,-0.27269053,0.037645537,0.34430397,0.61734563,0.8300554,0.9616758,0.9993486,0.9393935,0.78766763,0.5589933,0.27571005,-0.034507714,-0.34135437,-0.6148725,-0.8283003,-0.9608101,-0.999457,-0.94046533,-0.7895982,-0.561594,-0.27872688,0.031369552,0.338424,0.6123933,0.826537,0.959935,0.9995555,0.9415279,0.791521,0.5641892,0.28174093,-0.028231082,-0.33546773,-0.60990804,-0.82476556,-0.9590504,-0.9996442,-0.9425812,-0.793436,-0.56677884,-0.2847522,0.025116295,0.33250815,0.6074168,0.82298595,0.95815635,0.999723,0.9436252,0.7953432,0.5693629,0.28776067,-0.0219773,-0.32954532,-0.60491955,-0.8211983,-0.95725286,-0.999792,-0.9446599,-0.7972425,-0.5719413,-0.29074338,0.018838087,0.3265792,0.60241634,0.81940246,0.95633996,0.9998511,0.94568527,0.799134,0.5745141,0.29374617,-0.01569869,-0.32360992,-0.59990716,-0.81759864,-0.9554176,-0.99990034,-0.94670135,-0.8010176,-0.57706165,-0.29674605,0.012559137,0.3206374,0.59739214,0.81578666,0.95448583,0.99993974,0.9477081,0.80287904,0.57962316,0.29974303,-0.009419462,-0.31766173,-0.59487116,-0.8139667,-0.9535446,-0.9999693,-0.94870543,-0.80474687,-0.58217895,-0.30273703,0.0062796925,0.31468296,0.59234434,0.81213874,0.95259404,0.999989,0.94968593,0.80660677,0.58472896,0.30572808,-0.0031398619,-0.31170106,-0.5898117,-0.81030273,-0.95163405,-0.9999988,-0.9506647,-0.80845875,-0.58727324,-0.3087161,0.0]} diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/test/fixtures/julia/runner.jl b/lib/node_modules/@stdlib/math/base/special/sincospif/test/fixtures/julia/runner.jl index a24fc2b8f051..7e3fb136cd7d 100755 --- a/lib/node_modules/@stdlib/math/base/special/sincospif/test/fixtures/julia/runner.jl +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/test/fixtures/julia/runner.jl @@ -36,7 +36,7 @@ julia> gen( x, \"data.json\" ); ``` """ function gen( domain, name ) - x = collect( domain ); + x = Float32.( collect( domain ) ); s = sinpi.( x ); c = cospi.( x ); diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/test/test.assign.js b/lib/node_modules/@stdlib/math/base/special/sincospif/test/test.assign.js index faad56d0478a..6a59172c9d35 100644 --- a/lib/node_modules/@stdlib/math/base/special/sincospif/test/test.assign.js +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/test/test.assign.js @@ -24,10 +24,10 @@ var tape = require( 'tape' ); var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); var PINF = require( '@stdlib/constants/float32/pinf' ); var NINF = require( '@stdlib/constants/float32/ninf' ); -var absf = require( '@stdlib/math/base/special/absf' ); var powf = require( '@stdlib/math/base/special/powf' ); var Float32Array = require( '@stdlib/array/float32' ); -var EPS = require( '@stdlib/constants/float32/eps' ); +var f32 = require( '@stdlib/number/float64/base/to-float32' ); +var ulpdiff = require( '@stdlib/number/float32/base/ulp-difference' ); var sincospif = require( './../lib/assign.js' ); @@ -104,13 +104,13 @@ tape( 'the function computes sin(πx) and cos(πx) for integer input', function t.end(); }); -tape( 'if provided a value exceeding 2**53, the function returns [0,1]', function test( t ) { +tape( 'if provided a value exceeding 2**24, the function returns [0,1]', function test( t ) { var out; var x; var y; var i; - x = powf( 2.0, 53 ) + 1.0; + x = powf( 2.0, 24 ) + 1.0; for ( i = 0; i < 100; i++ ) { out = new Float32Array( 2 ); y = sincospif( x + i, out, 1, 0 ); @@ -132,14 +132,13 @@ tape( 'the function computes sin(πx) and cos(πx) for fractional part equal to out = new Float32Array( 2 ); y = sincospif( x, out, 1, 0 ); t.strictEqual( y, out, 'returns output array' ); - t.strictEqual( y[ 0 ], ( (i%2 === 0) ? 1.0 : -1.0 ), 'x: '+x+'. Expected: 0' ); - t.strictEqual( y[ 1 ], 0.0, 'x: '+x+'. Expected: 0' ); + t.strictEqual( y[ 0 ], ( (i%2 === 0) ? 1.0 : -1.0 ), 'x: '+x+'. Expected: '+( (i%2 === 0) ? 1.0 : -1.0 ) ); + t.strictEqual( y[ 1 ], 0.0, 'x: '+x+'. Expected: 0.0' ); } t.end(); }); tape( 'the function computes sin(πx) and cos(πx) for decimal input', function test( t ) { - var delta; var out; var x; var y; @@ -151,22 +150,15 @@ tape( 'the function computes sin(πx) and cos(πx) for decimal input', function s = decimals.sin; c = decimals.cos; for ( i = 0; i < x.length; i++ ) { + x[ i ] = f32( x[ i ] ); + s[ i ] = f32( s[ i ] ); + c[ i ] = f32( c[ i ] ); out = new Float32Array( 2 ); y = sincospif( x[ i ], out, 1, 0 ); t.strictEqual( y, out, 'returns output array' ); - if ( y[ 0 ] === s[ i ] ) { - t.strictEqual( y[ 0 ], s[ i ], 'x: '+x[ i ]+'. Expected: '+s[ i ] ); - } else { - delta = absf( y[ 0 ] - s[ i ] ); - t.ok(delta <= EPS, 'within tolerance. x: '+x[ i ]+'. Value: '+y[ 0 ]+'. Expected: '+s[ i ]+'. Tolerance: '+EPS+'.' ); - } - if ( y[ 1 ] === c[ i ] ) { - t.strictEqual( y[ 1 ], c[ i ], 'x: '+x[ i ]+'. Expected: '+c[ i ] ); - } else { - delta = absf( y[ 1 ] - c[ i ] ); - t.ok( delta <= EPS, 'within tolerance. x: '+x[ i ]+'. Value: '+y[ 1 ]+'. Expected: '+c[ i ]+'. Tolerance: '+EPS+'.' ); - } + t.strictEqual( ulpdiff( y[ 0 ], s[ i ] ) <= 1, true, 'returns expected sin value within 1 ulp. x: '+x[ i ]+'. Value: '+y[ 0 ]+'. Expected: '+s[ i ]+'.' ); + t.strictEqual( ulpdiff( y[ 1 ], c[ i ] ) <= 1, true, 'returns expected cos value within 1 ulp. x: '+x[ i ]+'. Value: '+y[ 1 ]+'. Expected: '+c[ i ]+'.' ); } t.end(); }); diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/test/test.main.js b/lib/node_modules/@stdlib/math/base/special/sincospif/test/test.main.js index bd8e6dd58789..7270c7359f95 100644 --- a/lib/node_modules/@stdlib/math/base/special/sincospif/test/test.main.js +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/test/test.main.js @@ -26,6 +26,7 @@ var PINF = require( '@stdlib/constants/float32/pinf' ); var NINF = require( '@stdlib/constants/float32/ninf' ); var absf = require( '@stdlib/math/base/special/absf' ); var powf = require( '@stdlib/math/base/special/powf' ); +var f32 = require( '@stdlib/number/float64/base/to-float32' ); var EPS = require( '@stdlib/constants/float32/eps' ); var sincospif = require( './../lib/main.js' ); @@ -83,12 +84,12 @@ tape( 'the function computes sin(πx) and cos(πx) for integer input', function t.end(); }); -tape( 'if provided a value exceeding 2**53, the function returns [0,1]', function test( t ) { +tape( 'if provided a value exceeding 2**24, the function returns [0,1]', function test( t ) { var x; var y; var i; - x = powf( 2.0, 53 ) + 1.0; + x = powf( 2.0, 24 ) + 1.0; for ( i = 0; i < 100; i++ ) { y = sincospif( x+i ); t.strictEqual( y[ 0 ], 0.0, 'returns expected value' ); @@ -105,13 +106,13 @@ tape( 'the function computes the sin(πx) and cos(πx) for fractional part equal for ( i = -100; i <= 100; i++ ) { x = 0.5 + i; y = sincospif( x ); - t.strictEqual( y[ 0 ], ( (i%2 === 0) ? 1.0 : -1.0 ), 'x: '+x+'. Expected: 0' ); - t.strictEqual( y[ 1 ], 0.0, 'x: '+x+'. Expected: 0' ); + t.strictEqual( y[ 0 ], ( (i%2 === 0) ? 1.0 : -1.0 ), 'x: '+x+'. Expected: '+( (i%2 === 0) ? 1.0 : -1.0 ) ); + t.strictEqual( y[ 1 ], 0.0, 'x: '+x+'. Expected: 0.0' ); } t.end(); }); -tape( 'the function computes the sin(πx) and cos(πx) for decimal input', function test( t ) { +tape( 'the function computes sin(πx) and cos(πx) for decimal input', function test( t ) { var delta; var x; var y; @@ -125,16 +126,16 @@ tape( 'the function computes the sin(πx) and cos(πx) for decimal input', funct for ( i = 0; i < x.length; i++ ) { y = sincospif( x[ i ] ); - if ( y[ 0 ] === s[ i ] ) { - t.strictEqual( y[ 0 ], s[ i ], 'x: '+x[ i ]+'. Expected: '+s[ i ] ); + if ( y[ 0 ] === f32( s[ i ] ) ) { + t.strictEqual( y[ 0 ], f32( s[ i ] ), 'x: '+x[ i ]+'. Expected: '+s[ i ] ); } else { - delta = absf( y[ 0 ] - s[ i ] ); + delta = absf( y[ 0 ] - f32( s[ i ] ) ); t.ok( delta <= EPS, 'within tolerance. x: '+x[ i ]+'. Value: '+y[ 0 ]+'. Expected: '+s[ i ]+'. Tolerance: '+EPS+'.' ); } - if ( y[ 1 ] === c[ i ] ) { - t.strictEqual( y[ 1 ], c[ i ], 'x: '+x[ i ]+'. Expected: '+c[ i ] ); + if ( y[ 1 ] === f32( c[ i ] ) ) { + t.strictEqual( y[ 1 ], f32( c[ i ] ), 'x: '+x[ i ]+'. Expected: '+c[ i ] ); } else { - delta = absf( y[ 1 ] - c[ i ] ); + delta = absf( y[ 1 ] - f32( c[ i ] ) ); t.ok( delta <= EPS, 'within tolerance. x: '+x[ i ]+'. Value: '+y[ 1 ]+'. Expected: '+c[ i ]+'. Tolerance: '+EPS+'.' ); } } diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/test/test.native.js b/lib/node_modules/@stdlib/math/base/special/sincospif/test/test.native.js index bbeb911e08be..f1ac6c86bcb5 100644 --- a/lib/node_modules/@stdlib/math/base/special/sincospif/test/test.native.js +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/test/test.native.js @@ -28,8 +28,7 @@ var NINF = require( '@stdlib/constants/float32/ninf' ); var absf = require( '@stdlib/math/base/special/absf' ); var powf = require( '@stdlib/math/base/special/powf' ); var tryRequire = require( '@stdlib/utils/try-require' ); -var float64ToFloat32 = require( '@stdlib/number/float64/base/to-float32' ); -var max = require( '@stdlib/math/base/special/max' ); +var f32 = require( '@stdlib/number/float64/base/to-float32' ); var EPS = require( '@stdlib/constants/float32/eps' ); @@ -88,18 +87,18 @@ tape( 'the function computes sin(πx) and cos(πx) for integer input', opts, fun c = integers.cos; for ( i = 0; i < x.length; i++ ) { y = sincospif( x[ i ] ); - t.strictEqual( y[ 0 ], s[ i ], 'returns '+s[ i ] ); - t.strictEqual( y[ 1 ], c[ i ], 'returns '+s[ i ] ); + t.strictEqual( y[ 0 ], s[ i ], 'returns expected value' ); + t.strictEqual( y[ 1 ], c[ i ], 'returns expected value' ); } t.end(); }); -tape( 'if provided a value exceeding 2**53, the function returns [0,1]', opts, function test( t ) { +tape( 'if provided a value exceeding 2**24, the function returns [0,1]', opts, function test( t ) { var x; var y; var i; - x = powf( 2.0, 53 ) + 1.0; + x = powf( 2.0, 24 ) + 1.0; for ( i = 0; i < 100; i++ ) { y = sincospif( x+i ); t.strictEqual( y[ 0 ], 0.0, 'returns expected value' ); @@ -116,15 +115,14 @@ tape( 'the function computes the sin(πx) and cos(πx) for fractional part equal for ( i = -100; i <= 100; i++ ) { x = 0.5 + i; y = sincospif( x ); - t.strictEqual( y[ 0 ], ( (i%2 === 0) ? 1.0 : -1.0 ), 'x: '+x+'. Expected: 0' ); - t.strictEqual( y[ 1 ], 0.0, 'x: '+x+'. Expected: 0' ); + t.strictEqual( y[ 0 ], ( (i%2 === 0) ? 1.0 : -1.0 ), 'x: '+x+'. Expected: '+( (i%2 === 0) ? 1.0 : -1.0 ) ); + t.strictEqual( y[ 1 ], 0.0, 'x: '+x+'. Expected: 0.0' ); } t.end(); }); tape( 'the function computes sin(πx) and cos(πx) for decimal input', opts, function test( t ) { var delta; - var tol; var x; var y; var i; @@ -137,20 +135,18 @@ tape( 'the function computes sin(πx) and cos(πx) for decimal input', opts, fun for ( i = 0; i < x.length; i++ ) { y = sincospif( x[ i ] ); - if ( y[ 0 ] === float64ToFloat32( s[ i ] ) ) { - t.strictEqual( y[ 0 ], float64ToFloat32( s[ i ] ), 'x: '+x[ i ]+'. Expected: '+s[ i ] ); + if ( y[ 0 ] === f32( s[ i ] ) ) { + t.strictEqual( y[ 0 ], f32( s[ i ] ), 'x: '+x[ i ]+'. Expected: '+s[ i ] ); } else { - delta = absf( y[ 0 ] - float64ToFloat32( s[ i ] ) ); - tol = max( 50.0 * EPS * max( absf( y[ 0 ] ), 1.0 ), 2.0e-5 ); - t.ok( delta <= tol, 'within tolerance. x: '+x[ i ]+'. Value: '+y[ 0 ]+'. Expected: '+s[ i ]+'. Tolerance: '+tol+'.'); + delta = absf( y[ 0 ] - f32( s[ i ] ) ); + t.ok( delta <= EPS, 'within tolerance. x: '+x[ i ]+'. Value: '+y[ 0 ]+'. Expected: '+s[ i ]+'. Tolerance: '+EPS+'.'); } - if ( y[ 1 ] === float64ToFloat32( c[ i ] ) ) { - t.strictEqual( y[ 1 ], float64ToFloat32( c[ i ] ), 'x: '+x[ i ]+'. Expected: '+c[ i ] ); + if ( y[ 1 ] === f32( c[ i ] ) ) { + t.strictEqual( y[ 1 ], f32( c[ i ] ), 'x: '+x[ i ]+'. Expected: '+c[ i ] ); } else { - delta = absf( y[ 1 ] - float64ToFloat32( c[ i ] ) ); - tol = max( 50.0 * EPS * max( absf( y[ 1 ] ), 1.0 ), 2.0e-5 ); - t.ok( delta <= tol, 'within tolerance. x: '+x[ i ]+'. Value: '+y[ 1 ]+'. Expected: '+c[ i ]+'. Tolerance: '+tol+'.'); + delta = absf( y[ 1 ] - f32( c[ i ] ) ); + t.ok( delta <= EPS, 'within tolerance. x: '+x[ i ]+'. Value: '+y[ 1 ]+'. Expected: '+c[ i ]+'. Tolerance: '+EPS+'.'); } } t.end(); From 482288ad8ba1dce7a1a4240e879d3d66b8096892 Mon Sep 17 00:00:00 2001 From: Vishal Gaikwad Date: Mon, 9 Mar 2026 23:02:16 +0530 Subject: [PATCH 10/10] fix: useNumericArray from @stdlib/types/array here rather than ArrayLike --- .../@stdlib/math/base/special/sincospif/docs/types/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/math/base/special/sincospif/docs/types/index.d.ts b/lib/node_modules/@stdlib/math/base/special/sincospif/docs/types/index.d.ts index 56b714625208..999a8c49e995 100644 --- a/lib/node_modules/@stdlib/math/base/special/sincospif/docs/types/index.d.ts +++ b/lib/node_modules/@stdlib/math/base/special/sincospif/docs/types/index.d.ts @@ -73,7 +73,7 @@ interface SinCosPiF { * var bool = ( v === out ); * // returns true */ - assign( x: number, out: Collection, stride: number, offset: number ): Collection; + assign( x: number, out: T, stride: number, offset: number ): T; } /**