diff --git a/CHANGELOG.md b/CHANGELOG.md index 648daec50..475fa24a3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@
-## Unreleased (2024-10-27) +## Unreleased (2024-10-29)
@@ -54,6 +54,28 @@ +
+ +#### [@stdlib/math/base/special/acosdf](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/math/base/special/acosdf) + +
+ +
+ +##### Features + +- [`b18921a`](https://github.com/stdlib-js/stdlib/commit/b18921a136da2755efccfd6ae23c8b3f5aaa8f4a) - add `math/base/special/acosdf` [(#3015)](https://github.com/stdlib-js/stdlib/pull/3015) + +
+ + + +
+ +
+ + +
#### [@stdlib/math/base/special/acotdf](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/math/base/special/acotdf) @@ -502,8 +524,9 @@ ### Contributors -A total of 5 people contributed to this release. Thank you to the following contributors: +A total of 6 people contributed to this release. Thank you to the following contributors: +- Aayush Khanna - Aman Bhansali - Athan Reines - Ayaka @@ -520,6 +543,7 @@ A total of 5 people contributed to this release. Thank you to the following cont
+- [`b18921a`](https://github.com/stdlib-js/stdlib/commit/b18921a136da2755efccfd6ae23c8b3f5aaa8f4a) - **feat:** add `math/base/special/acosdf` [(#3015)](https://github.com/stdlib-js/stdlib/pull/3015) _(by Aayush Khanna, Athan Reines)_ - [`60522bf`](https://github.com/stdlib-js/stdlib/commit/60522bfc0b5574d348301e788400178156731024) - **docs:** fix operator [(#3039)](https://github.com/stdlib-js/stdlib/pull/3039) _(by Gunj Joshi)_ - [`84b8294`](https://github.com/stdlib-js/stdlib/commit/84b8294c2d5494ff5eaaa2652dda81671e728068) - **feat:** add `math/base/special/nanmaxf` [(#3035)](https://github.com/stdlib-js/stdlib/pull/3035) _(by Gunj Joshi, Athan Reines)_ - [`f770fc2`](https://github.com/stdlib-js/stdlib/commit/f770fc258b7976ebd51fb501290cb33296d2e036) - **docs:** add missing fields in `package.json` [(#3036)](https://github.com/stdlib-js/stdlib/pull/3036) _(by Gunj Joshi)_ diff --git a/base/special/acosdf/README.md b/base/special/acosdf/README.md new file mode 100644 index 000000000..9f9901ce8 --- /dev/null +++ b/base/special/acosdf/README.md @@ -0,0 +1,197 @@ + + +# acosdf + +> Compute the [arccosine][arccosine] (in degrees) of a single-precision floating-point number. + +
+ +## Usage + +```javascript +var acosdf = require( '@stdlib/math/base/special/acosdf' ); +``` + +#### acosdf( x ) + +Computes the [arccosine][arccosine] (in degrees) of a single-precision floating-point number. + +```javascript +var sqrtf = require( '@stdlib/math/base/special/sqrtf' ); + +var v = acosdf( 0.0 ); +// returns 90.0 + +v = acosdf( 0.5 ); +// returns ~60.0 + +v = acosdf( sqrtf( 2 ) / 2 ); +// returns ~45.0 + +v = acosdf( sqrtf( 3 ) / 2 ); +// returns ~30.0 + +v = acosdf( NaN ); +// returns NaN +``` + +The domain of `x` is restricted to `[-1,1]`. If `|x| > 1`, the function returns `NaN`. + +```javascript +var v = acosdf( -3.14 ); +// returns NaN +``` + +
+ + + +
+ +## Examples + + + +```javascript +var linspace = require( '@stdlib/array/base/linspace' ); +var acosdf = require( '@stdlib/math/base/special/acosdf' ); + +var x = linspace( -1.0, 1.0, 100 ); + +var i; +for ( i = 0; i < x.length; i++ ) { + console.log( acosdf( x[ i ] ) ); +} +``` + +
+ + + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/math/base/special/acosdf.h" +``` + +#### stdlib_base_acosdf( x ) + +Computes the [arccosine][arccosine] (in degrees) of a single-precision floating-point number. + +```c +float out = stdlib_base_acosdf( 0.0f ); +// returns 90.0f + +out = stdlib_base_acosdf( 0.5f ); +// returns ~60.0f +``` + +The function accepts the following arguments: + +- **x**: `[in] float` input value. + +```c +float stdlib_base_acosdf( const float x ); +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/math/base/special/acosdf.h" +#include + +int main( void ) { + const float x[] = { 1.0f, 1.45f, 1.89f, 2.33f, 2.78f, 3.22f, 3.66f, 4.11f, 4.55f, 5.0f }; + + float v; + int i; + for ( i = 0; i < 10; i++ ) { + v = stdlib_base_acosdf( x[ i ] ); + printf( "acosdf(%f) = %f\n", x[ i ], v ); + } +} +``` + +
+ + + +
+ + + + + + + + + + + + + + diff --git a/base/special/acosdf/benchmark/benchmark.js b/base/special/acosdf/benchmark/benchmark.js new file mode 100644 index 000000000..188873866 --- /dev/null +++ b/base/special/acosdf/benchmark/benchmark.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var randu = require( '@stdlib/random/array/uniform' ); +var isnanf = require( './../../../../base/assert/is-nanf' ); +var pkg = require( './../package.json' ).name; +var acosdf = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var x; + var y; + var i; + + x = randu( 100, -1.0, 1.0 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = acosdf( x[ i % x.length ] ); + if ( isnanf( y ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( y ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/base/special/acosdf/benchmark/benchmark.native.js b/base/special/acosdf/benchmark/benchmark.native.js new file mode 100644 index 000000000..26a03471b --- /dev/null +++ b/base/special/acosdf/benchmark/benchmark.native.js @@ -0,0 +1,61 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var randu = require( '@stdlib/random/array/uniform' ); +var isnanf = require( './../../../../base/assert/is-nanf' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var acosdf = tryRequire( resolve( __dirname, './../lib/native.js' ) ); +var opts = { + 'skip': ( acosdf instanceof Error ) +}; + + +// MAIN // + +bench( pkg+'::native', opts, function benchmark( b ) { + var x; + var y; + var i; + + x = randu( 100, -1.0, 1.0 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = acosdf( x[ i % x.length ] ); + if ( isnanf( y ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( y ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/base/special/acosdf/benchmark/c/native/Makefile b/base/special/acosdf/benchmark/c/native/Makefile new file mode 100644 index 000000000..f69e9da2b --- /dev/null +++ b/base/special/acosdf/benchmark/c/native/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2024 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := benchmark.out + + +# RULES # + +#/ +# Compiles source files. +# +# @param {string} [C_COMPILER] - C compiler (e.g., `gcc`) +# @param {string} [CFLAGS] - C compiler options +# @param {(string|void)} [fPIC] - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} [INCLUDE] - list of includes (e.g., `-I /foo/bar -I /beep/boop/include`) +# @param {string} [SOURCE_FILES] - list of source files +# @param {string} [LIBPATH] - list of library paths (e.g., `-L /foo/bar -L /beep/boop`) +# @param {string} [LIBRARIES] - list of libraries (e.g., `-lopenblas -lpthread`) +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler (e.g., `gcc`) +# @param {string} CFLAGS - C compiler options +# @param {(string|void)} fPIC - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} INCLUDE - list of includes (e.g., `-I /foo/bar`) +# @param {string} SOURCE_FILES - list of source files +# @param {string} LIBPATH - list of library paths (e.g., `-L /foo/bar`) +# @param {string} LIBRARIES - list of libraries (e.g., `-lopenblas`) +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) $(fPIC) $(INCLUDE) -o $@ $(SOURCE_FILES) $< $(LIBPATH) -lm $(LIBRARIES) + +#/ +# Runs compiled benchmarks. +# +# @example +# make run +#/ +run: $(c_targets) + $(QUIET) ./$< + +.PHONY: run + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean diff --git a/base/special/acosdf/benchmark/c/native/benchmark.c b/base/special/acosdf/benchmark/c/native/benchmark.c new file mode 100644 index 000000000..84752b218 --- /dev/null +++ b/base/special/acosdf/benchmark/c/native/benchmark.c @@ -0,0 +1,136 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/math/base/special/acosdf.h" +#include +#include +#include +#include +#include + +#define NAME "acosdf" +#define ITERATIONS 1000000 +#define REPEATS 3 + +/** +* Prints the TAP version. +*/ +static void print_version( void ) { + printf( "TAP version 13\n" ); +} + +/** +* Prints the TAP summary. +* +* @param total total number of tests +* @param passing total number of passing tests +*/ +static void print_summary( int total, int passing ) { + printf( "#\n" ); + printf( "1..%d\n", total ); // TAP plan + printf( "# total %d\n", total ); + printf( "# pass %d\n", passing ); + printf( "#\n" ); + printf( "# ok\n" ); +} + +/** +* Prints benchmarks results. +* +* @param elapsed elapsed time in seconds +*/ +static void print_results( double elapsed ) { + double rate = (double)ITERATIONS / elapsed; + printf( " ---\n" ); + printf( " iterations: %d\n", ITERATIONS ); + printf( " elapsed: %0.9f\n", elapsed ); + printf( " rate: %0.9f\n", rate ); + printf( " ...\n" ); +} + +/** +* Returns a clock time. +* +* @return clock time +*/ +static double tic( void ) { + struct timeval now; + gettimeofday( &now, NULL ); + return (double)now.tv_sec + (double)now.tv_usec/1.0e6; +} + +/** +* Generates a random number on the interval [0,1). +* +* @return random number +*/ +static float rand_float( void ) { + int r = rand(); + return (float)r / ( (float)RAND_MAX + 1.0f ); +} + +/** +* Runs a benchmark. +* +* @return elapsed time in seconds +*/ +static double benchmark( void ) { + double elapsed; + float x[ 100 ]; + double t; + float y; + int i; + + for ( i = 0; i < 100; i++ ) { + x[ i ] = ( 2.0f * rand_float() ) - 1.0f; + } + + t = tic(); + for ( i = 0; i < ITERATIONS; i++ ) { + y = stdlib_base_acosdf( x[ i % 100 ] ); + if ( y != y ) { + printf( "should not return NaN\n" ); + break; + } + } + elapsed = tic() - t; + if ( y != y ) { + printf( "should not return NaN\n" ); + } + return elapsed; +} + +/** +* Main execution sequence. +*/ +int main( void ) { + double elapsed; + int i; + + // Use the current time to seed the random number generator: + srand( time( NULL ) ); + + print_version(); + for ( i = 0; i < REPEATS; i++ ) { + printf( "# c::native::%s\n", NAME ); + elapsed = benchmark(); + print_results( elapsed ); + printf( "ok %d benchmark finished\n", i+1 ); + } + print_summary( REPEATS, REPEATS ); +} diff --git a/base/special/acosdf/binding.gyp b/base/special/acosdf/binding.gyp new file mode 100644 index 000000000..ec3992233 --- /dev/null +++ b/base/special/acosdf/binding.gyp @@ -0,0 +1,170 @@ +# @license Apache-2.0 +# +# Copyright (c) 2024 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A `.gyp` file for building a Node.js native add-on. +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # List of files to include in this file: + 'includes': [ + './include.gypi', + ], + + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Target name should match the add-on export name: + 'addon_target_name%': 'addon', + + # Set variables based on the host OS: + 'conditions': [ + [ + 'OS=="win"', + { + # Define the object file suffix: + 'obj': 'obj', + }, + { + # Define the object file suffix: + 'obj': 'o', + } + ], # end condition (OS=="win") + ], # end conditions + }, # end variables + + # Define compile targets: + 'targets': [ + + # Target to generate an add-on: + { + # The target name should match the add-on export name: + 'target_name': '<(addon_target_name)', + + # Define dependencies: + 'dependencies': [], + + # Define directories which contain relevant include headers: + 'include_dirs': [ + # Local include directory: + '<@(include_dirs)', + ], + + # List of source files: + 'sources': [ + '<@(src_files)', + ], + + # Settings which should be applied when a target's object files are used as linker input: + 'link_settings': { + # Define libraries: + 'libraries': [ + '<@(libraries)', + ], + + # Define library directories: + 'library_dirs': [ + '<@(library_dirs)', + ], + }, + + # C/C++ compiler flags: + 'cflags': [ + # Enable commonly used warning options: + '-Wall', + + # Aggressive optimization: + '-O3', + ], + + # C specific compiler flags: + 'cflags_c': [ + # Specify the C standard to which a program is expected to conform: + '-std=c99', + ], + + # C++ specific compiler flags: + 'cflags_cpp': [ + # Specify the C++ standard to which a program is expected to conform: + '-std=c++11', + ], + + # Linker flags: + 'ldflags': [], + + # Apply conditions based on the host OS: + 'conditions': [ + [ + 'OS=="mac"', + { + # Linker flags: + 'ldflags': [ + '-undefined dynamic_lookup', + '-Wl,-no-pie', + '-Wl,-search_paths_first', + ], + }, + ], # end condition (OS=="mac") + [ + 'OS!="win"', + { + # C/C++ flags: + 'cflags': [ + # Generate platform-independent code: + '-fPIC', + ], + }, + ], # end condition (OS!="win") + ], # end conditions + }, # end target <(addon_target_name) + + # Target to copy a generated add-on to a standard location: + { + 'target_name': 'copy_addon', + + # Declare that the output of this target is not linked: + 'type': 'none', + + # Define dependencies: + 'dependencies': [ + # Require that the add-on be generated before building this target: + '<(addon_target_name)', + ], + + # Define a list of actions: + 'actions': [ + { + 'action_name': 'copy_addon', + 'message': 'Copying addon...', + + # Explicitly list the inputs in the command-line invocation below: + 'inputs': [], + + # Declare the expected outputs: + 'outputs': [ + '<(addon_output_dir)/<(addon_target_name).node', + ], + + # Define the command-line invocation: + 'action': [ + 'cp', + '<(PRODUCT_DIR)/<(addon_target_name).node', + '<(addon_output_dir)/<(addon_target_name).node', + ], + }, + ], # end actions + }, # end target copy_addon + ], # end targets +} diff --git a/base/special/acosdf/docs/repl.txt b/base/special/acosdf/docs/repl.txt new file mode 100644 index 000000000..92b4a3b8d --- /dev/null +++ b/base/special/acosdf/docs/repl.txt @@ -0,0 +1,29 @@ + +{{alias}}( x ) + Computes the arccosine (in degrees) of a single-precision floating-point + number. + + If `|x| > 1`, the function returns `NaN`. + + Parameters + ---------- + x: number + Input value. + + Returns + ------- + y: number + Arccosine (in degrees). + + Examples + -------- + > var y = {{alias}}( 0.0 ) + 90.0 + > y = {{alias}}( {{alias:@stdlib/constants/float32/pi}} / 6.0 ) + ~58.43 + > y = {{alias}}( NaN ) + NaN + + See Also + -------- + diff --git a/base/special/acosdf/docs/types/index.d.ts b/base/special/acosdf/docs/types/index.d.ts new file mode 100644 index 000000000..1db235c1e --- /dev/null +++ b/base/special/acosdf/docs/types/index.d.ts @@ -0,0 +1,56 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/** +* Computes the arccosine (in degrees) of a single-precision floating-point number. +* +* @param x - input value +* @returns arccosine (in degrees) +* +* @example +* var v = acosdf( 0.0 ); +* // returns 0.0 +* +* @example +* var v = acosdf( 0.5 ); +* // returns ~60.0 +* +* @example +* var sqrtf = require( '@stdlib/math/base/special/sqrtf' ); +* +* var v = acosdf( sqrtf( 2 ) / 2 ); +* // returns ~45.0 +* +* @example +* var sqrtf = require( '@stdlib/math/base/special/sqrtf' ); +* +* var v = acosdf( sqrtf( 3 ) / 2 ); +* // returns ~30.0 +* +* @example +* var v = acosdf( NaN ); +* // returns NaN +*/ +declare function acosdf( x: number ): number; + + +// EXPORTS // + +export = acosdf; diff --git a/base/special/acosdf/docs/types/test.ts b/base/special/acosdf/docs/types/test.ts new file mode 100644 index 000000000..53a795e67 --- /dev/null +++ b/base/special/acosdf/docs/types/test.ts @@ -0,0 +1,44 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import acosdf = require( './index' ); + + +// TESTS // + +// The function returns a number... +{ + acosdf( 0.5 ); // $ExpectType number +} + +// The compiler throws an error if the function is provided a value other than a number... +{ + acosdf( true ); // $ExpectError + acosdf( false ); // $ExpectError + acosdf( null ); // $ExpectError + acosdf( undefined ); // $ExpectError + acosdf( '5' ); // $ExpectError + acosdf( [] ); // $ExpectError + acosdf( {} ); // $ExpectError + acosdf( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided insufficient arguments... +{ + acosdf(); // $ExpectError +} diff --git a/base/special/acosdf/examples/c/Makefile b/base/special/acosdf/examples/c/Makefile new file mode 100644 index 000000000..6aed70daf --- /dev/null +++ b/base/special/acosdf/examples/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2024 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := example.out + + +# RULES # + +#/ +# Compiles source files. +# +# @param {string} [C_COMPILER] - C compiler (e.g., `gcc`) +# @param {string} [CFLAGS] - C compiler options +# @param {(string|void)} [fPIC] - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} [INCLUDE] - list of includes (e.g., `-I /foo/bar -I /beep/boop/include`) +# @param {string} [SOURCE_FILES] - list of source files +# @param {string} [LIBPATH] - list of library paths (e.g., `-L /foo/bar -L /beep/boop`) +# @param {string} [LIBRARIES] - list of libraries (e.g., `-lopenblas -lpthread`) +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler (e.g., `gcc`) +# @param {string} CFLAGS - C compiler options +# @param {(string|void)} fPIC - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} INCLUDE - list of includes (e.g., `-I /foo/bar`) +# @param {string} SOURCE_FILES - list of source files +# @param {string} LIBPATH - list of library paths (e.g., `-L /foo/bar`) +# @param {string} LIBRARIES - list of libraries (e.g., `-lopenblas`) +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) $(fPIC) $(INCLUDE) -o $@ $(SOURCE_FILES) $< $(LIBPATH) -lm $(LIBRARIES) + +#/ +# Runs compiled examples. +# +# @example +# make run +#/ +run: $(c_targets) + $(QUIET) ./$< + +.PHONY: run + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean diff --git a/base/special/acosdf/examples/c/example.c b/base/special/acosdf/examples/c/example.c new file mode 100644 index 000000000..3fa83fb7d --- /dev/null +++ b/base/special/acosdf/examples/c/example.c @@ -0,0 +1,31 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/math/base/special/acosdf.h" +#include + +int main( void ) { + const float x[] = { 1.0f, 1.45f, 1.89f, 2.33f, 2.78f, 3.22f, 3.66f, 4.11f, 4.55f, 5.0f }; + + float v; + int i; + for ( i = 0; i < 10; i++ ) { + v = stdlib_base_acosdf( x[ i ] ); + printf( "acosdf(%f) = %f\n", x[ i ], v ); + } +} diff --git a/base/special/acosdf/examples/index.js b/base/special/acosdf/examples/index.js new file mode 100644 index 000000000..a32a8afd7 --- /dev/null +++ b/base/special/acosdf/examples/index.js @@ -0,0 +1,29 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var linspace = require( '@stdlib/array/base/linspace' ); +var acosdf = require( './../lib' ); + +var x = linspace( -1.0, 1.0, 100 ); + +var i; +for ( i = 0; i < x.length; i++ ) { + console.log( 'acosdf(%d) = %d', x[ i ], acosdf( x[ i ] ) ); +} diff --git a/base/special/acosdf/include.gypi b/base/special/acosdf/include.gypi new file mode 100644 index 000000000..575cb043c --- /dev/null +++ b/base/special/acosdf/include.gypi @@ -0,0 +1,53 @@ +# @license Apache-2.0 +# +# Copyright (c) 2024 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A GYP include file for building a Node.js native add-on. +# +# Main documentation: +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Source directory: + 'src_dir': './src', + + # Include directories: + 'include_dirs': [ + '=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "degree", + "arccosine", + "cosine", + "inverse", + "trig", + "trigonometry", + "radians" + ] +} diff --git a/base/special/acosdf/src/Makefile b/base/special/acosdf/src/Makefile new file mode 100644 index 000000000..f30ea003e --- /dev/null +++ b/base/special/acosdf/src/Makefile @@ -0,0 +1,71 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2024 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + + +# RULES # + +#/ +# Removes generated files for building an add-on. +# +# @example +# make clean-addon +#/ +clean-addon: + $(QUIET) -rm -f *.o *.node + +.PHONY: clean-addon + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: clean-addon + +.PHONY: clean + diff --git a/base/special/acosdf/src/addon.c b/base/special/acosdf/src/addon.c new file mode 100644 index 000000000..80c65cb8d --- /dev/null +++ b/base/special/acosdf/src/addon.c @@ -0,0 +1,23 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/math/base/special/acosdf.h" +#include "stdlib/math/base/napi/unary.h" + +// cppcheck-suppress shadowFunction +STDLIB_MATH_BASE_NAPI_MODULE_F_F( stdlib_base_acosdf ) diff --git a/base/special/acosdf/src/main.c b/base/special/acosdf/src/main.c new file mode 100644 index 000000000..6246d309f --- /dev/null +++ b/base/special/acosdf/src/main.c @@ -0,0 +1,36 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/math/base/special/acosdf.h" +#include "stdlib/math/base/special/acosf.h" +#include "stdlib/math/base/special/rad2degf.h" + +/** +* Computes the arccosine (in degrees) of a single-precision floating-point number. +* +* @param x input value +* @return arccosine (in degrees) +* +* @example +* float v = stdlib_base_acosdf( 0.0f ); +* // returns 90.0f +*/ +float stdlib_base_acosdf( const float x ) { + float rad = stdlib_base_acosf( x ); + return stdlib_base_rad2degf( rad ); +} diff --git a/base/special/acosdf/test/fixtures/julia/REQUIRE b/base/special/acosdf/test/fixtures/julia/REQUIRE new file mode 100644 index 000000000..ae40bf736 --- /dev/null +++ b/base/special/acosdf/test/fixtures/julia/REQUIRE @@ -0,0 +1,2 @@ +julia 1.5 +JSON 0.21 \ No newline at end of file diff --git a/base/special/acosdf/test/fixtures/julia/negative.json b/base/special/acosdf/test/fixtures/julia/negative.json new file mode 100644 index 000000000..4c10f33c6 --- /dev/null +++ b/base/special/acosdf/test/fixtures/julia/negative.json @@ -0,0 +1 @@ +{"expected":[180.0,178.189,177.43874,176.86293,176.3775,175.94977,175.563,175.20726,174.87614,174.56512,174.2709,173.99098,173.72354,173.467,173.22011,172.98186,172.75136,172.52797,172.31104,172.1,171.89442,171.69391,171.49811,171.30667,171.11932,170.9358,170.75592,170.57944,170.40616,170.23593,170.0686,169.904,169.74205,169.58255,169.42545,169.27061,169.11797,168.9674,168.81883,168.6722,168.5274,168.3844,168.2431,168.10345,167.96542,167.82893,167.69392,167.56035,167.42819,167.29738,167.16788,167.03963,166.91263,166.78685,166.66222,166.5387,166.41632,166.29498,166.17473,166.05547,165.93718,165.81989,165.70352,165.58809,165.47354,165.35988,165.24707,165.1351,165.02396,164.91359,164.80403,164.69522,164.58717,164.47986,164.37325,164.26735,164.16216,164.05762,163.95375,163.85054,163.74797,163.64603,163.54468,163.44394,163.3438,163.24425,163.14525,163.04683,162.94896,162.85164,162.75484,162.65854,162.56279,162.46754,162.37279,162.2785,162.18474,162.09143,161.9986,161.9062,161.81429,161.72281,161.63177,161.54118,161.45099,161.36124,161.2719,161.18297,161.09442,161.0063,160.91856,160.83122,160.74425,160.65765,160.57143,160.48557,160.40009,160.31494,160.23015,160.14572,160.06161,159.97786,159.89444,159.81136,159.72858,159.64615,159.56401,159.48221,159.40071,159.31952,159.23863,159.15804,159.07774,158.99776,158.91805,158.83862,158.75949,158.68063,158.60205,158.52374,158.44571,158.36794,158.29045,158.2132,158.13622,158.05951,157.98303,157.90681,157.83084,157.75513,157.67964,157.60442,157.52942,157.45465,157.38013,157.30583,157.23177,157.15793,157.08432,157.01093,156.93777,156.8648,156.79208,156.71956,156.64726,156.57515,156.50327,156.4316,156.36012,156.28886,156.21779,156.14691,156.07623,156.00577,155.93547,155.86539,155.79549,155.72578,155.65627,155.58691,155.51778,155.4488,155.38002,155.3114,155.24298,155.17473,155.10664,155.03874,154.97101,154.90344,154.83606,154.76883,154.70178,154.63489,154.56818,154.5016,154.4352,154.36896,154.30289,154.23695,154.17119,154.10559,154.04013,153.97484,153.90967,153.84468,153.77982,153.71512,153.65057,153.58615,153.5219,153.45778,153.39381,153.32997,153.26628,153.20273,153.13933,153.07605,153.01291,152.94992,152.88705,152.82433,152.76172,152.69925,152.63693,152.57472,152.51266,152.45071,152.3889,152.32721,152.26566,152.20421,152.14291,152.08173,152.02066,151.95972,151.8989,151.8382,151.77763,151.71716,151.65681,151.59659,151.5365,151.4765,151.41663,151.35686,151.29721,151.23767,151.17827,151.11894,151.05975,151.00067,150.94168,150.8828,150.82405,150.76541,150.70686,150.6484,150.59007,150.53185,150.47372,150.4157,150.35779,150.29997,150.24226,150.18465,150.12714,150.06973,150.01242,149.95522,149.89812,149.8411,149.78416,149.72736,149.67064,149.614,149.55746,149.50104,149.4447,149.38844,149.33229,149.27621,149.22026,149.16437,149.10857,149.05287,148.99728,148.94176,148.88632,148.831,148.77573,148.72057,148.66548,148.61049,148.5556,148.50078,148.44606,148.3914,148.33684,148.28236,148.22797,148.17365,148.11942,148.06528,148.01122,147.95723,147.90332,147.8495,147.79576,147.74211,147.68852,147.63503,147.5816,147.52826,147.47498,147.42178,147.36867,147.31564,147.2627,147.20981,147.157,147.10426,147.05162,146.99902,146.94652,146.89409,146.8417,146.78943,146.73721,146.68507,146.63301,146.58101,146.52907,146.4772,146.42543,146.3737,146.32207,146.2705,146.219,146.16754,146.11618,146.06487,146.01364,145.9625,145.91138,145.86037,145.8094,145.7585,145.70769,145.65692,145.60622,145.55559,145.50502,145.45451,145.40408,145.3537,145.30339,145.25314,145.20296,145.15285,145.1028,145.0528,145.00287,144.953,144.9032,144.85344,144.80377,144.75414,144.70457,144.65506,144.60562,144.55624,144.50693,144.45766,144.40846,144.35931,144.31023,144.26122,144.21223,144.16331,144.11447,144.06567,144.01694,143.96825,143.91963,143.87106,143.82254,143.7741,143.7257,143.67735,143.62906,143.58084,143.53265,143.48454,143.43645,143.38844,143.34048,143.29259,143.24472,143.19693,143.14917,143.10149,143.05383,143.00626,142.95872,142.91124,142.86382,142.81642,142.7691,142.72182,142.67459,142.62743,142.5803,142.53323,142.4862,142.43922,142.3923,142.34544,142.29861,142.25183,142.20511,142.15845,142.11182,142.06523,142.01869,141.97223,141.9258,141.87941,141.83308,141.78679,141.74054,141.69434,141.6482,141.6021,141.55605,141.51004,141.46408,141.41815,141.37228,141.32646,141.28069,141.23497,141.18929,141.14363,141.09804,141.05249,141.00697,140.96152,140.9161,140.87073,140.82541,140.78012,140.7349,140.6897,140.64455,140.59943,140.55435,140.50934,140.46436,140.41942,140.37451,140.32967,140.28487,140.24008,140.19536,140.15068,140.10602,140.06143,140.01688,139.97234,139.92787,139.88344,139.83905,139.7947,139.75038,139.7061,139.66187,139.61766,139.57352,139.5294,139.48534,139.4413,139.3973,139.35335,139.30943,139.26555,139.22173,139.17792,139.13416,139.09044,139.04674,139.00311,138.9595,138.91592,138.87239,138.82892,138.78545,138.74203,138.69867,138.65532,138.61201,138.56874,138.52551,138.48232,138.43916,138.39604,138.35297,138.3099,138.26689,138.22392,138.18097,138.13808,138.0952,138.05238,138.00958,137.96681,137.92409,137.88141,137.83875,137.79613,137.75354,137.71098,137.66847,137.62599,137.58356,137.54112,137.49875,137.45642,137.41411,137.37183,137.32957,137.28737,137.2452,137.20306,137.16095,137.11888,137.07683,137.03484,136.99284,136.95091,136.909,136.86713,136.82529,136.78346,136.74168,136.69995,136.65823,136.61655,136.5749,136.5333,136.4917,136.45013,136.40863,136.36714,136.32568,136.28424,136.24284,136.20148,136.16014,136.11885,136.07756,136.03633,135.99512,135.95393,135.9128,135.87166,135.83058,135.78952,135.7485,135.70749,135.66653,135.6256,135.58469,135.5438,135.50296,135.46214,135.42134,135.3806,135.33986,135.29915,135.25848,135.21785,135.17722,135.13664,135.09608,135.05556,135.01506,134.97458,134.93414,134.89374,134.85335,134.813,134.77267,134.73236,134.6921,134.65184,134.61163,134.57144,134.53128,134.49115,134.45105,134.41096,134.37093,134.3309,134.2909,134.25093,134.211,134.17108,134.1312,134.09134,134.0515,134.01169,133.97191,133.93216,133.89244,133.85272,133.81305,133.7734,133.73378,133.6942,133.65462,133.61508,133.57556,133.53607,133.49661,133.45717,133.41776,133.37837,133.339,133.29965,133.26036,133.22105,133.18181,133.14258,133.10336,133.06418,133.02501,132.98589,132.94678,132.90768,132.86862,132.82959,132.79057,132.75159,132.71262,132.67369,132.63478,132.59589,132.55702,132.51817,132.47935,132.44057,132.4018,132.36305,132.32434,132.28563,132.24696,132.2083,132.1697,132.13109,132.09251,132.05394,132.01541,131.97691,131.93843,131.89996,131.86153,131.8231,131.78473,131.74635,131.70801,131.66968,131.63138,131.5931,131.55482,131.5166,131.47841,131.4402,131.40204,131.3639,131.32578,131.28767,131.2496,131.21155,131.17351,131.1355,131.09752,131.05956,131.0216,130.98367,130.94579,130.9079,130.87006,130.83221,130.7944,130.7566,130.71883,130.68108,130.64336,130.60564,130.56796,130.53029,130.49266,130.45503,130.41743,130.37985,130.3423,130.30476,130.26724,130.22974,130.19226,130.1548,130.11737,130.07996,130.04256,130.00519,129.96783,129.93051,129.8932,129.85591,129.81863,129.78139,129.74416,129.70694,129.66975,129.63258,129.59543,129.5583,129.52118,129.4841,129.44702,129.40997,129.37294,129.33594,129.29895,129.26196,129.225,129.18808,129.15117,129.11427,129.0774,129.04053,129.00371,128.96689,128.93008,128.8933,128.85654,128.8198,128.78307,128.74637,128.70969,128.673,128.63637,128.59973,128.56313,128.52654,128.48996,128.4534,128.41687,128.38036,128.34386,128.30737,128.27092,128.23447,128.19804,128.16164,128.12524,128.08888,128.05252,128.01617,127.97987,127.94356,127.90728,127.871025,127.83477,127.798546,127.762344,127.72614,127.68997,127.65381,127.617676,127.58155,127.54544,127.50935,127.47329,127.43724,127.4012,127.36518,127.329185,127.29319,127.25723,127.22128,127.185356,127.149445,127.11354,127.07766,127.0418,127.00595,126.97012,126.9343,126.89851,126.86274,126.82697,126.79123,126.7555,126.71978,126.68409,126.64841,126.612755,126.5771,126.54147,126.50586,126.47026,126.43469,126.39912,126.36357,126.32804,126.29253,126.25703,126.221535,126.18607,126.15062,126.11519,126.079765,126.04436,126.00898,125.973595,125.93825,125.90291,125.86758,125.83228,125.79698,125.761696,125.726456,125.6912,125.65597,125.62075,125.58556,125.55037,125.51521,125.48005,125.444916,125.40979,125.37469,125.33959,125.30451,125.26946,125.234406,125.19938,125.16437,125.12936,125.094376,125.0594,125.024445,124.9895,124.95459,124.91967,124.88478,124.84989,124.81503,124.780174,124.74534,124.71052,124.67571,124.64092,124.60614,124.57137,124.53664,124.501884,124.46717,124.432465,124.39778,124.36309,124.32844,124.29378,124.259155,124.224525,124.18993,124.155334,124.12076,124.0862,124.051636,124.017105,123.9826,123.948074,123.91358,123.879105,123.84464,123.81019,123.77575,123.741325,123.70693,123.67253,123.63814,123.60377,123.56943,123.53509,123.500755,123.46644,123.43214,123.39785,123.36358,123.329315,123.295074,123.26084,123.226616,123.19241,123.15822,123.12405,123.08988,123.055725,123.02159,122.98745,122.95335,122.91925,122.88516,122.85108,122.817024,122.782974,122.74894,122.71491,122.680916,122.64691,122.61292,122.578964,122.545006,122.51106,122.47713,122.44321,122.4093,122.37541,122.34154,122.30767,122.27381,122.23997,122.20613,122.172325,122.13851,122.10472,122.07094,122.037186,122.003426,121.96969,121.93594,121.90223,121.86853,121.83483,121.80115,121.76749,121.733826,121.700195,121.66655,121.632935,121.59933,121.565735,121.53214,121.498566,121.46502,121.431465,121.39794,121.364426,121.3309,121.2974,121.26392,121.23044,121.196976,121.163536,121.13009,121.096664,121.06324,121.02984,120.99644,120.963066,120.929695,120.89634,120.86299,120.82966,120.79634,120.76302,120.72972,120.69643,120.663155,120.62989,120.59663,120.56341,120.53016,120.49693,120.46374,120.43054,120.39735,120.36418,120.33102,120.29786,120.264725,120.2316,120.19848,120.16537,120.13227,120.09918,120.06612,120.03306,119.96695,119.93392,119.9009,119.867905,119.8349,119.80191,119.76893,119.73597,119.70302,119.670074,119.63714,119.604225,119.571304,119.538414,119.505516,119.47264,119.43977,119.40692,119.37406,119.34124,119.308395,119.27559,119.24279,119.20999,119.17721,119.14443,119.11168,119.07892,119.04617,119.01344,118.98073,118.94801,118.915306,118.88263,118.849945,118.81728,118.78462,118.75197,118.71934,118.6867,118.65408,118.621475,118.58888,118.55629,118.523705,118.49114,118.45859,118.42603,118.39349,118.36097,118.32846,118.295944,118.26345,118.23095,118.19848,118.16601,118.13355,118.10111,118.068665,118.03623,118.00382,117.971405,117.939,117.90661,117.87424,117.841866,117.8095,117.77715,117.744804,117.71249,117.68016,117.64784,117.61554,117.583244,117.550964,117.518684,117.48642,117.45417,117.42191,117.38968,117.35745,117.32524,117.29303,117.26082,117.22864,117.19645,117.16428,117.132126,117.09997,117.067825,117.03568,117.00356,116.971436,116.93933,116.907234,116.875145,116.84307,116.811,116.77893,116.74689,116.714836,116.68281,116.65077,116.61877,116.58676,116.554756,116.52276,116.49078,116.45882,116.42685,116.39489,116.362946,116.33101,116.29909,116.26716,116.23525,116.203354,116.171455,116.13957,116.107704,116.075836,116.043976,116.01212,115.98028,115.94845,115.916626,115.88481,115.853004,115.821205,115.78942,115.757645,115.72587,115.69411,115.662346,115.6306,115.59887,115.56714,115.5354,115.5037,115.47199,115.4403,115.40861,115.37693,115.34525,115.31358,115.28194,115.25028,115.21864,115.18702,115.155396,115.12379,115.09218,115.060585,115.029,114.99741,114.965836,114.93428,114.90271,114.87117,114.83962,114.8081,114.776566,114.745056,114.71354,114.68204,114.65055,114.619064,114.58759,114.556114,114.52466,114.4932,114.46176,114.43032,114.398895,114.36747,114.33606,114.30465,114.273254,114.24186,114.21048,114.17911,114.147736,114.11638,114.08502,114.05367,114.02234,113.991005,113.959694,113.928375,113.897064,113.86577,113.83448,113.80319,113.77192,113.74065,113.70939,113.67813,113.64689,113.61565,113.58441,113.55319,113.52198,113.49077,113.459564,113.428375,113.39719,113.366005,113.33483,113.303665,113.27251,113.24136,113.21021,113.179085,113.14795,113.11684,113.08572,113.05461,113.02351,112.99242,112.96133,112.93025,112.899185,112.86812,112.83706,112.806015,112.77497,112.743935,112.712906,112.68188,112.65086,112.61986,112.58886,112.55786,112.52688,112.4959,112.46493,112.43396,112.403,112.37205,112.3411,112.31016,112.279236,112.24831,112.21739,112.18648,112.15557,112.12468,112.09379,112.062904,112.03202,112.00115,111.97029,111.93943,111.908585,111.87774,111.8469,111.81607,111.78525,111.75443,111.723625,111.69282,111.66202,111.631226,111.60045,111.569664,111.538895,111.50813,111.47737,111.44662,111.41588,111.38514,111.35441,111.323685,111.29296,111.262245,111.23154,111.20084,111.17015,111.13946,111.10878,111.0781,111.04744,111.01678,110.98612,110.95547,110.92483,110.89419,110.86356,110.83293,110.802315,110.7717,110.741104,110.7105,110.6799,110.649315,110.61874,110.58816,110.557594,110.52703,110.496475,110.46593,110.43539,110.40484,110.374306,110.34378,110.31326,110.282745,110.252235,110.22173,110.191246,110.16075,110.130264,110.099785,110.06932,110.03885,110.008385,109.977936,109.94749,109.917046,109.886604,109.85618,109.825745,109.795334,109.764915,109.73451,109.7041,109.673706,109.64332,109.61293,109.58256,109.552185,109.52182,109.49145,109.4611,109.43074,109.400406,109.37006,109.33972,109.3094,109.27908,109.248764,109.218445,109.18814,109.157845,109.12755,109.09726,109.06698,109.0367,109.006424,108.97616,108.9459,108.91564,108.88539,108.85515,108.824905,108.79468,108.76444,108.73422,108.704,108.6738,108.64359,108.61339,108.58318,108.55299,108.52281,108.49263,108.462456,108.43229,108.40212,108.37196,108.34181,108.31167,108.281525,108.25138,108.221245,108.19112,108.160995,108.13088,108.10077,108.07066,108.04056,108.01047,107.98038,107.95029,107.920204,107.89014,107.86006,107.829994,107.799934,107.769875,107.73983,107.709785,107.67974,107.649704,107.61968,107.58965,107.55962,107.52962,107.4996,107.4696,107.43959,107.4096,107.37961,107.349625,107.31964,107.28967,107.2597,107.22973,107.199776,107.169815,107.139854,107.10992,107.07997,107.05003,107.0201,106.99017,106.96025,106.930336,106.90042,106.87051,106.84061,106.810715,106.78081,106.75092,106.72104,106.691154,106.66128,106.63141,106.60154,106.57168,106.541824,106.51197,106.482124,106.45228,106.42244,106.39261,106.36278,106.332954,106.30313,106.273315,106.24351,106.2137,106.1839,106.1541,106.124306,106.09452,106.06473,106.03495,106.00517,105.9754,105.94564,105.91587,105.88612,105.85636,105.826614,105.79687,105.76713,105.7374,105.707664,105.67793,105.64822,105.61849,105.588776,105.55907,105.52936,105.499664,105.46996,105.44028,105.41058,105.3809,105.35122,105.32154,105.29187,105.2622,105.232544,105.20288,105.173225,105.14357,105.11393,105.08428,105.05464,105.02501,104.995384,104.96575,104.936134,104.90652,104.8769,104.84729,104.81768,104.788086,104.758484,104.72889,104.6993,104.66972,104.64013,104.61056,104.58098,104.551414,104.52184,104.49229,104.46272,104.433174,104.403625,104.374084,104.344536,104.315,104.28546,104.255936,104.22641,104.19688,104.167366,104.137856,104.10834,104.078835,104.049324,104.01983,103.990326,103.96084,103.93135,103.90186,103.87238,103.8429,103.81343,103.783966,103.75449,103.72504,103.69558,103.66612,103.636665,103.60722,103.577774,103.54834,103.5189,103.48947,103.46004,103.43061,103.40119,103.37177,103.342354,103.31294,103.28354,103.254135,103.22473,103.195335,103.16595,103.13655,103.10716,103.07778,103.0484,103.01903,102.989655,102.96029,102.930916,102.90156,102.8722,102.84284,102.81349,102.78414,102.7548,102.72546,102.69611,102.66678,102.63745,102.60812,102.578804,102.54948,102.52016,102.49085,102.46153,102.43223,102.40292,102.37362,102.34432,102.315025,102.285736,102.25645,102.227165,102.19788,102.1686,102.13933,102.110054,102.08079,102.05151,102.022255,101.993,101.96374,101.93449,101.905235,101.87599,101.84675,101.817505,101.78827,101.75903,101.729805,101.70058,101.67135,101.64213,101.61291,101.58369,101.554474,101.52527,101.49606,101.46686,101.43766,101.40846,101.37927,101.350075,101.320885,101.2917,101.26252,101.23334,101.20416,101.17499,101.14582,101.116646,101.08749,101.05832,101.02916,101.0,100.97085,100.9417,100.91256,100.883415,100.85427,100.82513,100.79599,100.76685,100.73773,100.7086,100.679474,100.65035,100.62123,100.59212,100.563,100.53389,100.50478,100.47568,100.44657,100.41747,100.388374,100.35928,100.330185,100.301094,100.27201,100.24293,100.21385,100.18477,100.155685,100.12662,100.09755,100.06848,100.03941,100.01035,99.981285,99.95223,99.92318,99.89412,99.86508,99.83603,99.806984,99.77794,99.74889,99.719864,99.69083,99.6618,99.63277,99.60374,99.574715,99.54569,99.51667,99.487656,99.45864,99.42963,99.40062,99.37161,99.342606,99.3136,99.2846,99.2556,99.22661,99.19761,99.168625,99.13963,99.11065,99.081665,99.05268,99.023705,98.99473,98.96575,98.93678,98.907814,98.87884,98.84988,98.820915,98.791954,98.76299,98.73404,98.705086,98.67613,98.64719,98.61823,98.589294,98.56035,98.53141,98.50247,98.47353,98.4446,98.41567,98.38674,98.35781,98.32889,98.29996,98.27104,98.24213,98.2132,98.18429,98.15538,98.126465,98.097565,98.06865,98.03975,98.01085,97.98195,97.95305,97.92415,97.895256,97.86636,97.83748,97.808586,97.7797,97.75082,97.72194,97.693054,97.66417,97.6353,97.60642,97.57755,97.54868,97.51981,97.490944,97.46208,97.43322,97.40436,97.3755,97.34664,97.31779,97.28893,97.260086,97.23123,97.202385,97.17354,97.1447,97.11585,97.08701,97.058174,97.029335,97.0005,96.971664,96.94283,96.91401,96.88518,96.85635,96.82753,96.798706,96.76988,96.741066,96.71225,96.68343,96.65462,96.62581,96.597,96.568184,96.539375,96.51057,96.481766,96.452965,96.424164,96.39536,96.36657,96.33777,96.308975,96.28018,96.25139,96.2226,96.19381,96.16503,96.13624,96.10746,96.078674,96.0499,96.02112,95.99234,95.96356,95.93479,95.90602,95.87724,95.84848,95.81971,95.79094,95.76218,95.73341,95.70465,95.67589,95.64713,95.61838,95.589615,95.56086,95.532104,95.50336,95.4746,95.445854,95.4171,95.38835,95.35961,95.330864,95.302124,95.273384,95.24464,95.215904,95.187164,95.15843,95.12969,95.10096,95.07223,95.043495,95.01477,94.986046,94.95731,94.92859,94.89986,94.87114,94.842415,94.8137,94.78497,94.756256,94.72754,94.69882,94.670105,94.64139,94.61268,94.58397,94.55525,94.52655,94.49784,94.46913,94.44043,94.41172,94.38302,94.35431,94.32561,94.29691,94.26821,94.23952,94.210815,94.18212,94.15343,94.124725,94.09604,94.067345,94.03865,94.009964,93.98127,93.95258,93.9239,93.89521,93.86653,93.837845,93.80916,93.78048,93.7518,93.72312,93.69444,93.66576,93.637085,93.608406,93.579735,93.55106,93.52238,93.493706,93.46504,93.43637,93.40769,93.37903,93.35036,93.321686,93.29302,93.26436,93.23569,93.20703,93.17837,93.1497,93.12104,93.09238,93.06372,93.03506,93.0064,92.977745,92.94908,92.920425,92.89177,92.86311,92.83446,92.8058,92.77715,92.7485,92.71985,92.69119,92.66255,92.633896,92.60524,92.5766,92.54795,92.5193,92.490654,92.462006,92.433365,92.404724,92.376076,92.34743,92.318794,92.290146,92.261505,92.232864,92.20422,92.17558,92.14694,92.11831,92.08967,92.06103,92.03239,92.003746,91.97512,91.94648,91.91785,91.889206,91.86057,91.83194,91.80331,91.77467,91.74604,91.71741,91.688774,91.66014,91.63151,91.60288,91.57426,91.54562,91.517,91.488365,91.45974,91.43111,91.40248,91.37385,91.34522,91.3166,91.28797,91.25934,91.23071,91.20209,91.17346,91.14484,91.11621,91.08759,91.05897,91.03034,91.00172,90.97309,90.94447,90.91585,90.88722,90.858604,90.82998,90.80136,90.772736,90.74412,90.71549,90.686874,90.65825,90.62963,90.60101,90.57239,90.54377,90.51515,90.48653,90.45791,90.42929,90.40067,90.37205,90.34343,90.314804,90.28619,90.25757,90.22895,90.200325,90.17171,90.14309,90.11447,90.08585,90.057236,90.02862,90.0],"x":[-1.0,-0.9995004995004995,-0.999000999000999,-0.9985014985014985,-0.998001998001998,-0.9975024975024975,-0.997002997002997,-0.9965034965034965,-0.996003996003996,-0.9955044955044955,-0.995004995004995,-0.9945054945054945,-0.994005994005994,-0.9935064935064936,-0.993006993006993,-0.9925074925074925,-0.9920079920079921,-0.9915084915084915,-0.991008991008991,-0.9905094905094906,-0.99000999000999,-0.9895104895104895,-0.989010989010989,-0.9885114885114885,-0.988011988011988,-0.9875124875124875,-0.987012987012987,-0.9865134865134865,-0.986013986013986,-0.9855144855144855,-0.985014985014985,-0.9845154845154845,-0.984015984015984,-0.9835164835164835,-0.983016983016983,-0.9825174825174825,-0.9820179820179821,-0.9815184815184815,-0.981018981018981,-0.9805194805194806,-0.98001998001998,-0.9795204795204795,-0.9790209790209791,-0.9785214785214785,-0.978021978021978,-0.9775224775224776,-0.977022977022977,-0.9765234765234765,-0.9760239760239761,-0.9755244755244755,-0.975024975024975,-0.9745254745254746,-0.974025974025974,-0.9735264735264735,-0.973026973026973,-0.9725274725274725,-0.972027972027972,-0.9715284715284715,-0.971028971028971,-0.9705294705294706,-0.97002997002997,-0.9695304695304695,-0.9690309690309691,-0.9685314685314685,-0.968031968031968,-0.9675324675324676,-0.967032967032967,-0.9665334665334665,-0.9660339660339661,-0.9655344655344655,-0.965034965034965,-0.9645354645354646,-0.964035964035964,-0.9635364635364635,-0.9630369630369631,-0.9625374625374625,-0.962037962037962,-0.9615384615384616,-0.961038961038961,-0.9605394605394605,-0.9600399600399601,-0.9595404595404595,-0.9590409590409591,-0.9585414585414586,-0.958041958041958,-0.9575424575424576,-0.957042957042957,-0.9565434565434565,-0.9560439560439561,-0.9555444555444556,-0.955044955044955,-0.9545454545454546,-0.954045954045954,-0.9535464535464535,-0.9530469530469531,-0.9525474525474525,-0.952047952047952,-0.9515484515484516,-0.951048951048951,-0.9505494505494505,-0.9500499500499501,-0.9495504495504495,-0.949050949050949,-0.9485514485514486,-0.948051948051948,-0.9475524475524476,-0.9470529470529471,-0.9465534465534465,-0.9460539460539461,-0.9455544455544456,-0.945054945054945,-0.9445554445554446,-0.9440559440559441,-0.9435564435564435,-0.9430569430569431,-0.9425574425574426,-0.942057942057942,-0.9415584415584416,-0.9410589410589411,-0.9405594405594405,-0.9400599400599401,-0.9395604395604396,-0.939060939060939,-0.9385614385614386,-0.938061938061938,-0.9375624375624375,-0.9370629370629371,-0.9365634365634365,-0.936063936063936,-0.9355644355644356,-0.935064935064935,-0.9345654345654346,-0.9340659340659341,-0.9335664335664335,-0.9330669330669331,-0.9325674325674326,-0.932067932067932,-0.9315684315684316,-0.9310689310689311,-0.9305694305694305,-0.9300699300699301,-0.9295704295704296,-0.929070929070929,-0.9285714285714286,-0.9280719280719281,-0.9275724275724275,-0.9270729270729271,-0.9265734265734266,-0.926073926073926,-0.9255744255744256,-0.9250749250749251,-0.9245754245754245,-0.9240759240759241,-0.9235764235764236,-0.9230769230769231,-0.9225774225774226,-0.922077922077922,-0.9215784215784216,-0.9210789210789211,-0.9205794205794205,-0.9200799200799201,-0.9195804195804196,-0.919080919080919,-0.9185814185814186,-0.9180819180819181,-0.9175824175824175,-0.9170829170829171,-0.9165834165834166,-0.916083916083916,-0.9155844155844156,-0.9150849150849151,-0.9145854145854145,-0.9140859140859141,-0.9135864135864136,-0.913086913086913,-0.9125874125874126,-0.9120879120879121,-0.9115884115884116,-0.9110889110889111,-0.9105894105894106,-0.9100899100899101,-0.9095904095904096,-0.9090909090909091,-0.9085914085914086,-0.9080919080919081,-0.9075924075924076,-0.9070929070929071,-0.9065934065934066,-0.906093906093906,-0.9055944055944056,-0.9050949050949051,-0.9045954045954046,-0.9040959040959041,-0.9035964035964036,-0.903096903096903,-0.9025974025974026,-0.9020979020979021,-0.9015984015984015,-0.9010989010989011,-0.9005994005994006,-0.9000999000999002,-0.8996003996003996,-0.8991008991008991,-0.8986013986013986,-0.8981018981018981,-0.8976023976023976,-0.8971028971028971,-0.8966033966033966,-0.8961038961038961,-0.8956043956043956,-0.8951048951048951,-0.8946053946053946,-0.8941058941058941,-0.8936063936063936,-0.8931068931068931,-0.8926073926073926,-0.8921078921078921,-0.8916083916083916,-0.8911088911088911,-0.8906093906093906,-0.8901098901098901,-0.8896103896103896,-0.8891108891108891,-0.8886113886113887,-0.8881118881118881,-0.8876123876123876,-0.8871128871128872,-0.8866133866133866,-0.8861138861138861,-0.8856143856143857,-0.8851148851148851,-0.8846153846153846,-0.8841158841158842,-0.8836163836163836,-0.8831168831168831,-0.8826173826173827,-0.8821178821178821,-0.8816183816183816,-0.8811188811188811,-0.8806193806193806,-0.8801198801198801,-0.8796203796203796,-0.8791208791208791,-0.8786213786213786,-0.8781218781218781,-0.8776223776223776,-0.8771228771228772,-0.8766233766233766,-0.8761238761238761,-0.8756243756243757,-0.8751248751248751,-0.8746253746253746,-0.8741258741258742,-0.8736263736263736,-0.8731268731268731,-0.8726273726273727,-0.8721278721278721,-0.8716283716283716,-0.8711288711288712,-0.8706293706293706,-0.8701298701298701,-0.8696303696303697,-0.8691308691308691,-0.8686313686313686,-0.8681318681318682,-0.8676323676323676,-0.8671328671328671,-0.8666333666333667,-0.8661338661338661,-0.8656343656343657,-0.8651348651348651,-0.8646353646353646,-0.8641358641358642,-0.8636363636363636,-0.8631368631368631,-0.8626373626373627,-0.8621378621378621,-0.8616383616383616,-0.8611388611388612,-0.8606393606393606,-0.8601398601398601,-0.8596403596403597,-0.8591408591408591,-0.8586413586413586,-0.8581418581418582,-0.8576423576423576,-0.8571428571428571,-0.8566433566433567,-0.8561438561438561,-0.8556443556443556,-0.8551448551448552,-0.8546453546453546,-0.8541458541458542,-0.8536463536463537,-0.8531468531468531,-0.8526473526473527,-0.8521478521478522,-0.8516483516483516,-0.8511488511488512,-0.8506493506493507,-0.8501498501498501,-0.8496503496503497,-0.8491508491508492,-0.8486513486513486,-0.8481518481518482,-0.8476523476523476,-0.8471528471528471,-0.8466533466533467,-0.8461538461538461,-0.8456543456543456,-0.8451548451548452,-0.8446553446553446,-0.8441558441558441,-0.8436563436563437,-0.8431568431568431,-0.8426573426573427,-0.8421578421578422,-0.8416583416583416,-0.8411588411588412,-0.8406593406593407,-0.8401598401598401,-0.8396603396603397,-0.8391608391608392,-0.8386613386613386,-0.8381618381618382,-0.8376623376623377,-0.8371628371628371,-0.8366633366633367,-0.8361638361638362,-0.8356643356643356,-0.8351648351648352,-0.8346653346653347,-0.8341658341658341,-0.8336663336663337,-0.8331668331668332,-0.8326673326673326,-0.8321678321678322,-0.8316683316683317,-0.8311688311688312,-0.8306693306693307,-0.8301698301698301,-0.8296703296703297,-0.8291708291708292,-0.8286713286713286,-0.8281718281718282,-0.8276723276723277,-0.8271728271728271,-0.8266733266733267,-0.8261738261738262,-0.8256743256743256,-0.8251748251748252,-0.8246753246753247,-0.8241758241758241,-0.8236763236763237,-0.8231768231768232,-0.8226773226773226,-0.8221778221778222,-0.8216783216783217,-0.8211788211788211,-0.8206793206793207,-0.8201798201798202,-0.8196803196803197,-0.8191808191808192,-0.8186813186813187,-0.8181818181818182,-0.8176823176823177,-0.8171828171828172,-0.8166833166833167,-0.8161838161838162,-0.8156843156843157,-0.8151848151848152,-0.8146853146853147,-0.8141858141858141,-0.8136863136863137,-0.8131868131868132,-0.8126873126873126,-0.8121878121878122,-0.8116883116883117,-0.8111888111888111,-0.8106893106893107,-0.8101898101898102,-0.8096903096903096,-0.8091908091908092,-0.8086913086913087,-0.8081918081918081,-0.8076923076923077,-0.8071928071928072,-0.8066933066933067,-0.8061938061938062,-0.8056943056943057,-0.8051948051948052,-0.8046953046953047,-0.8041958041958042,-0.8036963036963037,-0.8031968031968032,-0.8026973026973027,-0.8021978021978022,-0.8016983016983017,-0.8011988011988012,-0.8006993006993007,-0.8001998001998002,-0.7997002997002997,-0.7992007992007992,-0.7987012987012987,-0.7982017982017982,-0.7977022977022977,-0.7972027972027972,-0.7967032967032966,-0.7962037962037962,-0.7957042957042957,-0.7952047952047953,-0.7947052947052947,-0.7942057942057942,-0.7937062937062938,-0.7932067932067932,-0.7927072927072927,-0.7922077922077922,-0.7917082917082917,-0.7912087912087912,-0.7907092907092907,-0.7902097902097902,-0.7897102897102897,-0.7892107892107892,-0.7887112887112887,-0.7882117882117882,-0.7877122877122877,-0.7872127872127872,-0.7867132867132867,-0.7862137862137862,-0.7857142857142857,-0.7852147852147852,-0.7847152847152847,-0.7842157842157842,-0.7837162837162838,-0.7832167832167832,-0.7827172827172827,-0.7822177822177823,-0.7817182817182817,-0.7812187812187812,-0.7807192807192808,-0.7802197802197802,-0.7797202797202797,-0.7792207792207793,-0.7787212787212787,-0.7782217782217782,-0.7777222777222778,-0.7772227772227772,-0.7767232767232767,-0.7762237762237763,-0.7757242757242757,-0.7752247752247752,-0.7747252747252747,-0.7742257742257742,-0.7737262737262737,-0.7732267732267732,-0.7727272727272727,-0.7722277722277723,-0.7717282717282717,-0.7712287712287712,-0.7707292707292708,-0.7702297702297702,-0.7697302697302697,-0.7692307692307693,-0.7687312687312687,-0.7682317682317682,-0.7677322677322678,-0.7672327672327672,-0.7667332667332667,-0.7662337662337663,-0.7657342657342657,-0.7652347652347652,-0.7647352647352648,-0.7642357642357642,-0.7637362637362637,-0.7632367632367633,-0.7627372627372627,-0.7622377622377622,-0.7617382617382618,-0.7612387612387612,-0.7607392607392608,-0.7602397602397603,-0.7597402597402597,-0.7592407592407593,-0.7587412587412588,-0.7582417582417582,-0.7577422577422578,-0.7572427572427572,-0.7567432567432567,-0.7562437562437563,-0.7557442557442557,-0.7552447552447552,-0.7547452547452548,-0.7542457542457542,-0.7537462537462537,-0.7532467532467533,-0.7527472527472527,-0.7522477522477522,-0.7517482517482518,-0.7512487512487512,-0.7507492507492507,-0.7502497502497503,-0.7497502497502497,-0.7492507492507493,-0.7487512487512488,-0.7482517482517482,-0.7477522477522478,-0.7472527472527473,-0.7467532467532467,-0.7462537462537463,-0.7457542457542458,-0.7452547452547452,-0.7447552447552448,-0.7442557442557443,-0.7437562437562437,-0.7432567432567433,-0.7427572427572428,-0.7422577422577422,-0.7417582417582418,-0.7412587412587412,-0.7407592407592407,-0.7402597402597403,-0.7397602397602397,-0.7392607392607392,-0.7387612387612388,-0.7382617382617382,-0.7377622377622378,-0.7372627372627373,-0.7367632367632367,-0.7362637362637363,-0.7357642357642358,-0.7352647352647352,-0.7347652347652348,-0.7342657342657343,-0.7337662337662337,-0.7332667332667333,-0.7327672327672328,-0.7322677322677322,-0.7317682317682318,-0.7312687312687313,-0.7307692307692307,-0.7302697302697303,-0.7297702297702298,-0.7292707292707292,-0.7287712287712288,-0.7282717282717283,-0.7277722277722277,-0.7272727272727273,-0.7267732267732268,-0.7262737262737263,-0.7257742257742258,-0.7252747252747253,-0.7247752247752248,-0.7242757242757243,-0.7237762237762237,-0.7232767232767233,-0.7227772227772228,-0.7222777222777222,-0.7217782217782218,-0.7212787212787213,-0.7207792207792207,-0.7202797202797203,-0.7197802197802198,-0.7192807192807192,-0.7187812187812188,-0.7182817182817183,-0.7177822177822177,-0.7172827172827173,-0.7167832167832168,-0.7162837162837162,-0.7157842157842158,-0.7152847152847153,-0.7147852147852148,-0.7142857142857143,-0.7137862137862138,-0.7132867132867133,-0.7127872127872128,-0.7122877122877123,-0.7117882117882118,-0.7112887112887113,-0.7107892107892108,-0.7102897102897103,-0.7097902097902098,-0.7092907092907093,-0.7087912087912088,-0.7082917082917083,-0.7077922077922078,-0.7072927072927073,-0.7067932067932068,-0.7062937062937062,-0.7057942057942058,-0.7052947052947053,-0.7047952047952047,-0.7042957042957043,-0.7037962037962038,-0.7032967032967034,-0.7027972027972028,-0.7022977022977023,-0.7017982017982018,-0.7012987012987013,-0.7007992007992008,-0.7002997002997003,-0.6998001998001998,-0.6993006993006993,-0.6988011988011988,-0.6983016983016983,-0.6978021978021978,-0.6973026973026973,-0.6968031968031968,-0.6963036963036963,-0.6958041958041958,-0.6953046953046953,-0.6948051948051948,-0.6943056943056943,-0.6938061938061938,-0.6933066933066933,-0.6928071928071928,-0.6923076923076923,-0.6918081918081919,-0.6913086913086913,-0.6908091908091908,-0.6903096903096904,-0.6898101898101898,-0.6893106893106893,-0.6888111888111889,-0.6883116883116883,-0.6878121878121878,-0.6873126873126874,-0.6868131868131868,-0.6863136863136863,-0.6858141858141859,-0.6853146853146853,-0.6848151848151848,-0.6843156843156843,-0.6838161838161838,-0.6833166833166833,-0.6828171828171828,-0.6823176823176823,-0.6818181818181818,-0.6813186813186813,-0.6808191808191808,-0.6803196803196803,-0.6798201798201798,-0.6793206793206793,-0.6788211788211789,-0.6783216783216783,-0.6778221778221778,-0.6773226773226774,-0.6768231768231768,-0.6763236763236763,-0.6758241758241759,-0.6753246753246753,-0.6748251748251748,-0.6743256743256744,-0.6738261738261738,-0.6733266733266733,-0.6728271728271729,-0.6723276723276723,-0.6718281718281718,-0.6713286713286714,-0.6708291708291708,-0.6703296703296703,-0.6698301698301699,-0.6693306693306693,-0.6688311688311688,-0.6683316683316683,-0.6678321678321678,-0.6673326673326674,-0.6668331668331668,-0.6663336663336663,-0.6658341658341659,-0.6653346653346653,-0.6648351648351648,-0.6643356643356644,-0.6638361638361638,-0.6633366633366633,-0.6628371628371629,-0.6623376623376623,-0.6618381618381618,-0.6613386613386614,-0.6608391608391608,-0.6603396603396603,-0.6598401598401599,-0.6593406593406593,-0.6588411588411588,-0.6583416583416584,-0.6578421578421578,-0.6573426573426573,-0.6568431568431569,-0.6563436563436563,-0.6558441558441559,-0.6553446553446554,-0.6548451548451548,-0.6543456543456544,-0.6538461538461539,-0.6533466533466533,-0.6528471528471529,-0.6523476523476524,-0.6518481518481518,-0.6513486513486514,-0.6508491508491508,-0.6503496503496503,-0.6498501498501499,-0.6493506493506493,-0.6488511488511488,-0.6483516483516484,-0.6478521478521478,-0.6473526473526473,-0.6468531468531469,-0.6463536463536463,-0.6458541458541458,-0.6453546453546454,-0.6448551448551448,-0.6443556443556444,-0.6438561438561439,-0.6433566433566433,-0.6428571428571429,-0.6423576423576424,-0.6418581418581418,-0.6413586413586414,-0.6408591408591409,-0.6403596403596403,-0.6398601398601399,-0.6393606393606394,-0.6388611388611388,-0.6383616383616384,-0.6378621378621379,-0.6373626373626373,-0.6368631368631369,-0.6363636363636364,-0.6358641358641358,-0.6353646353646354,-0.6348651348651349,-0.6343656343656343,-0.6338661338661339,-0.6333666333666333,-0.6328671328671329,-0.6323676323676324,-0.6318681318681318,-0.6313686313686314,-0.6308691308691309,-0.6303696303696303,-0.6298701298701299,-0.6293706293706294,-0.6288711288711288,-0.6283716283716284,-0.6278721278721279,-0.6273726273726273,-0.6268731268731269,-0.6263736263736264,-0.6258741258741258,-0.6253746253746254,-0.6248751248751249,-0.6243756243756243,-0.6238761238761239,-0.6233766233766234,-0.6228771228771228,-0.6223776223776224,-0.6218781218781219,-0.6213786213786214,-0.6208791208791209,-0.6203796203796204,-0.6198801198801199,-0.6193806193806194,-0.6188811188811189,-0.6183816183816184,-0.6178821178821179,-0.6173826173826173,-0.6168831168831169,-0.6163836163836164,-0.6158841158841158,-0.6153846153846154,-0.6148851148851149,-0.6143856143856143,-0.6138861138861139,-0.6133866133866134,-0.6128871128871128,-0.6123876123876124,-0.6118881118881119,-0.6113886113886113,-0.6108891108891109,-0.6103896103896104,-0.6098901098901099,-0.6093906093906094,-0.6088911088911089,-0.6083916083916084,-0.6078921078921079,-0.6073926073926074,-0.6068931068931069,-0.6063936063936064,-0.6058941058941059,-0.6053946053946054,-0.6048951048951049,-0.6043956043956044,-0.6038961038961039,-0.6033966033966034,-0.6028971028971029,-0.6023976023976024,-0.6018981018981019,-0.6013986013986014,-0.6008991008991009,-0.6003996003996004,-0.5999000999000998,-0.5994005994005994,-0.5989010989010989,-0.5984015984015985,-0.5979020979020979,-0.5974025974025974,-0.596903096903097,-0.5964035964035964,-0.5959040959040959,-0.5954045954045954,-0.5949050949050949,-0.5944055944055944,-0.593906093906094,-0.5934065934065934,-0.5929070929070929,-0.5924075924075924,-0.5919080919080919,-0.5914085914085914,-0.5909090909090909,-0.5904095904095904,-0.5899100899100899,-0.5894105894105894,-0.5889110889110889,-0.5884115884115884,-0.5879120879120879,-0.5874125874125874,-0.586913086913087,-0.5864135864135864,-0.5859140859140859,-0.5854145854145855,-0.5849150849150849,-0.5844155844155844,-0.583916083916084,-0.5834165834165834,-0.5829170829170829,-0.5824175824175825,-0.5819180819180819,-0.5814185814185814,-0.580919080919081,-0.5804195804195804,-0.5799200799200799,-0.5794205794205795,-0.5789210789210789,-0.5784215784215784,-0.577922077922078,-0.5774225774225774,-0.5769230769230769,-0.5764235764235764,-0.5759240759240759,-0.5754245754245755,-0.5749250749250749,-0.5744255744255744,-0.573926073926074,-0.5734265734265734,-0.5729270729270729,-0.5724275724275725,-0.5719280719280719,-0.5714285714285714,-0.570929070929071,-0.5704295704295704,-0.5699300699300699,-0.5694305694305695,-0.5689310689310689,-0.5684315684315684,-0.567932067932068,-0.5674325674325674,-0.5669330669330669,-0.5664335664335665,-0.5659340659340659,-0.5654345654345654,-0.564935064935065,-0.5644355644355644,-0.563936063936064,-0.5634365634365635,-0.5629370629370629,-0.5624375624375625,-0.561938061938062,-0.5614385614385614,-0.560939060939061,-0.5604395604395604,-0.5599400599400599,-0.5594405594405595,-0.5589410589410589,-0.5584415584415584,-0.557942057942058,-0.5574425574425574,-0.5569430569430569,-0.5564435564435565,-0.5559440559440559,-0.5554445554445554,-0.554945054945055,-0.5544455544455544,-0.5539460539460539,-0.5534465534465535,-0.5529470529470529,-0.5524475524475524,-0.551948051948052,-0.5514485514485514,-0.550949050949051,-0.5504495504495505,-0.5499500499500499,-0.5494505494505495,-0.548951048951049,-0.5484515484515484,-0.547952047952048,-0.5474525474525475,-0.5469530469530469,-0.5464535464535465,-0.545954045954046,-0.5454545454545454,-0.544955044955045,-0.5444555444555444,-0.5439560439560439,-0.5434565434565435,-0.542957042957043,-0.5424575424575424,-0.541958041958042,-0.5414585414585414,-0.5409590409590409,-0.5404595404595405,-0.5399600399600399,-0.5394605394605395,-0.538961038961039,-0.5384615384615384,-0.537962037962038,-0.5374625374625375,-0.5369630369630369,-0.5364635364635365,-0.535964035964036,-0.5354645354645354,-0.534965034965035,-0.5344655344655345,-0.5339660339660339,-0.5334665334665335,-0.532967032967033,-0.5324675324675324,-0.531968031968032,-0.5314685314685315,-0.5309690309690309,-0.5304695304695305,-0.52997002997003,-0.5294705294705294,-0.528971028971029,-0.5284715284715285,-0.527972027972028,-0.5274725274725275,-0.526973026973027,-0.5264735264735265,-0.525974025974026,-0.5254745254745254,-0.524975024975025,-0.5244755244755245,-0.5239760239760239,-0.5234765234765235,-0.522977022977023,-0.5224775224775224,-0.521978021978022,-0.5214785214785215,-0.5209790209790209,-0.5204795204795205,-0.51998001998002,-0.5194805194805194,-0.518981018981019,-0.5184815184815185,-0.5179820179820179,-0.5174825174825175,-0.516983016983017,-0.5164835164835165,-0.515984015984016,-0.5154845154845155,-0.514985014985015,-0.5144855144855145,-0.513986013986014,-0.5134865134865135,-0.512987012987013,-0.5124875124875125,-0.511988011988012,-0.5114885114885115,-0.510989010989011,-0.5104895104895105,-0.50999000999001,-0.5094905094905094,-0.508991008991009,-0.5084915084915085,-0.5079920079920079,-0.5074925074925075,-0.506993006993007,-0.5064935064935064,-0.505994005994006,-0.5054945054945055,-0.504995004995005,-0.5044955044955045,-0.503996003996004,-0.5034965034965035,-0.502997002997003,-0.5024975024975025,-0.501998001998002,-0.5014985014985015,-0.500999000999001,-0.5004995004995005,-0.4995004995004995,-0.499000999000999,-0.4985014985014985,-0.498001998001998,-0.4975024975024975,-0.497002997002997,-0.4965034965034965,-0.49600399600399603,-0.4955044955044955,-0.495004995004995,-0.4945054945054945,-0.494005994005994,-0.4935064935064935,-0.493006993006993,-0.4925074925074925,-0.492007992007992,-0.4915084915084915,-0.49100899100899104,-0.4905094905094905,-0.49000999000999,-0.48951048951048953,-0.489010989010989,-0.4885114885114885,-0.48801198801198803,-0.4875124875124875,-0.487012987012987,-0.4865134865134865,-0.486013986013986,-0.4855144855144855,-0.485014985014985,-0.48451548451548454,-0.484015984015984,-0.4835164835164835,-0.48301698301698304,-0.4825174825174825,-0.482017982017982,-0.48151848151848153,-0.481018981018981,-0.4805194805194805,-0.48001998001998003,-0.47952047952047955,-0.479020979020979,-0.4785214785214785,-0.47802197802197804,-0.4775224775224775,-0.477022977022977,-0.47652347652347654,-0.476023976023976,-0.4755244755244755,-0.47502497502497504,-0.4745254745254745,-0.474025974025974,-0.47352647352647353,-0.47302697302697305,-0.4725274725274725,-0.47202797202797203,-0.47152847152847155,-0.471028971028971,-0.47052947052947053,-0.47002997002997005,-0.4695304695304695,-0.469030969030969,-0.46853146853146854,-0.468031968031968,-0.4675324675324675,-0.46703296703296704,-0.46653346653346656,-0.466033966033966,-0.46553446553446554,-0.46503496503496505,-0.4645354645354645,-0.46403596403596403,-0.46353646353646355,-0.463036963036963,-0.46253746253746253,-0.46203796203796205,-0.46153846153846156,-0.461038961038961,-0.46053946053946054,-0.46003996003996006,-0.4595404595404595,-0.45904095904095904,-0.45854145854145856,-0.458041958041958,-0.45754245754245754,-0.45704295704295705,-0.4565434565434565,-0.45604395604395603,-0.45554445554445555,-0.45504495504495507,-0.45454545454545453,-0.45404595404595405,-0.45354645354645357,-0.453046953046953,-0.45254745254745254,-0.45204795204795206,-0.4515484515484515,-0.45104895104895104,-0.45054945054945056,-0.4500499500499501,-0.44955044955044954,-0.44905094905094906,-0.4485514485514486,-0.44805194805194803,-0.44755244755244755,-0.44705294705294707,-0.44655344655344653,-0.44605394605394605,-0.44555444555444557,-0.44505494505494503,-0.44455544455544455,-0.44405594405594406,-0.4435564435564436,-0.44305694305694304,-0.44255744255744256,-0.4420579420579421,-0.44155844155844154,-0.44105894105894106,-0.4405594405594406,-0.44005994005994004,-0.43956043956043955,-0.43906093906093907,-0.4385614385614386,-0.43806193806193805,-0.43756243756243757,-0.4370629370629371,-0.43656343656343655,-0.43606393606393606,-0.4355644355644356,-0.43506493506493504,-0.43456543456543456,-0.4340659340659341,-0.43356643356643354,-0.43306693306693306,-0.4325674325674326,-0.4320679320679321,-0.43156843156843155,-0.43106893106893107,-0.4305694305694306,-0.43006993006993005,-0.42957042957042957,-0.4290709290709291,-0.42857142857142855,-0.42807192807192807,-0.4275724275724276,-0.4270729270729271,-0.42657342657342656,-0.4260739260739261,-0.4255744255744256,-0.42507492507492506,-0.4245754245754246,-0.4240759240759241,-0.42357642357642356,-0.4230769230769231,-0.4225774225774226,-0.42207792207792205,-0.42157842157842157,-0.4210789210789211,-0.4205794205794206,-0.42007992007992007,-0.4195804195804196,-0.4190809190809191,-0.41858141858141856,-0.4180819180819181,-0.4175824175824176,-0.41708291708291706,-0.4165834165834166,-0.4160839160839161,-0.4155844155844156,-0.4150849150849151,-0.4145854145854146,-0.4140859140859141,-0.41358641358641357,-0.4130869130869131,-0.4125874125874126,-0.41208791208791207,-0.4115884115884116,-0.4110889110889111,-0.41058941058941056,-0.4100899100899101,-0.4095904095904096,-0.4090909090909091,-0.4085914085914086,-0.4080919080919081,-0.4075924075924076,-0.4070929070929071,-0.4065934065934066,-0.4060939060939061,-0.40559440559440557,-0.4050949050949051,-0.4045954045954046,-0.40409590409590407,-0.4035964035964036,-0.4030969030969031,-0.4025974025974026,-0.4020979020979021,-0.4015984015984016,-0.4010989010989011,-0.4005994005994006,-0.4000999000999001,-0.3996003996003996,-0.3991008991008991,-0.3986013986013986,-0.3981018981018981,-0.39760239760239763,-0.3971028971028971,-0.3966033966033966,-0.3961038961038961,-0.3956043956043956,-0.3951048951048951,-0.3946053946053946,-0.3941058941058941,-0.3936063936063936,-0.3931068931068931,-0.3926073926073926,-0.3921078921078921,-0.3916083916083916,-0.39110889110889113,-0.3906093906093906,-0.3901098901098901,-0.38961038961038963,-0.3891108891108891,-0.3886113886113886,-0.3881118881118881,-0.3876123876123876,-0.3871128871128871,-0.3866133866133866,-0.38611388611388614,-0.3856143856143856,-0.3851148851148851,-0.38461538461538464,-0.3841158841158841,-0.3836163836163836,-0.38311688311688313,-0.3826173826173826,-0.3821178821178821,-0.38161838161838163,-0.3811188811188811,-0.3806193806193806,-0.3801198801198801,-0.37962037962037964,-0.3791208791208791,-0.3786213786213786,-0.37812187812187814,-0.3776223776223776,-0.3771228771228771,-0.37662337662337664,-0.3761238761238761,-0.3756243756243756,-0.37512487512487513,-0.37462537462537465,-0.3741258741258741,-0.37362637362637363,-0.37312687312687315,-0.3726273726273726,-0.37212787212787213,-0.37162837162837165,-0.3711288711288711,-0.3706293706293706,-0.37012987012987014,-0.3696303696303696,-0.3691308691308691,-0.36863136863136864,-0.36813186813186816,-0.3676323676323676,-0.36713286713286714,-0.36663336663336665,-0.3661338661338661,-0.36563436563436563,-0.36513486513486515,-0.3646353646353646,-0.36413586413586413,-0.36363636363636365,-0.36313686313686316,-0.3626373626373626,-0.36213786213786214,-0.36163836163836166,-0.3611388611388611,-0.36063936063936064,-0.36013986013986016,-0.3596403596403596,-0.35914085914085914,-0.35864135864135865,-0.3581418581418581,-0.35764235764235763,-0.35714285714285715,-0.35664335664335667,-0.35614385614385613,-0.35564435564435565,-0.35514485514485516,-0.3546453546453546,-0.35414585414585414,-0.35364635364635366,-0.3531468531468531,-0.35264735264735264,-0.35214785214785216,-0.3516483516483517,-0.35114885114885114,-0.35064935064935066,-0.3501498501498502,-0.34965034965034963,-0.34915084915084915,-0.34865134865134867,-0.34815184815184813,-0.34765234765234765,-0.34715284715284717,-0.34665334665334663,-0.34615384615384615,-0.34565434565434566,-0.3451548451548452,-0.34465534465534464,-0.34415584415584416,-0.3436563436563437,-0.34315684315684314,-0.34265734265734266,-0.3421578421578422,-0.34165834165834164,-0.34115884115884115,-0.34065934065934067,-0.34015984015984013,-0.33966033966033965,-0.33916083916083917,-0.3386613386613387,-0.33816183816183815,-0.33766233766233766,-0.3371628371628372,-0.33666333666333664,-0.33616383616383616,-0.3356643356643357,-0.33516483516483514,-0.33466533466533466,-0.3341658341658342,-0.3336663336663337,-0.33316683316683315,-0.33266733266733267,-0.3321678321678322,-0.33166833166833165,-0.33116883116883117,-0.3306693306693307,-0.33016983016983015,-0.32967032967032966,-0.3291708291708292,-0.32867132867132864,-0.32817182817182816,-0.3276723276723277,-0.3271728271728272,-0.32667332667332666,-0.3261738261738262,-0.3256743256743257,-0.32517482517482516,-0.3246753246753247,-0.3241758241758242,-0.32367632367632365,-0.32317682317682317,-0.3226773226773227,-0.3221778221778222,-0.32167832167832167,-0.3211788211788212,-0.3206793206793207,-0.32017982017982016,-0.3196803196803197,-0.3191808191808192,-0.31868131868131866,-0.3181818181818182,-0.3176823176823177,-0.31718281718281716,-0.3166833166833167,-0.3161838161838162,-0.3156843156843157,-0.31518481518481517,-0.3146853146853147,-0.3141858141858142,-0.31368631368631367,-0.3131868131868132,-0.3126873126873127,-0.31218781218781216,-0.3116883116883117,-0.3111888111888112,-0.3106893106893107,-0.3101898101898102,-0.3096903096903097,-0.3091908091908092,-0.3086913086913087,-0.3081918081918082,-0.3076923076923077,-0.30719280719280717,-0.3066933066933067,-0.3061938061938062,-0.30569430569430567,-0.3051948051948052,-0.3046953046953047,-0.3041958041958042,-0.3036963036963037,-0.3031968031968032,-0.3026973026973027,-0.3021978021978022,-0.3016983016983017,-0.3011988011988012,-0.3006993006993007,-0.3001998001998002,-0.2997002997002997,-0.29920079920079923,-0.2987012987012987,-0.2982017982017982,-0.2977022977022977,-0.2972027972027972,-0.2967032967032967,-0.2962037962037962,-0.2957042957042957,-0.2952047952047952,-0.2947052947052947,-0.2942057942057942,-0.2937062937062937,-0.2932067932067932,-0.29270729270729273,-0.2922077922077922,-0.2917082917082917,-0.29120879120879123,-0.2907092907092907,-0.2902097902097902,-0.2897102897102897,-0.2892107892107892,-0.2887112887112887,-0.2882117882117882,-0.28771228771228774,-0.2872127872127872,-0.2867132867132867,-0.28621378621378624,-0.2857142857142857,-0.2852147852147852,-0.28471528471528473,-0.2842157842157842,-0.2837162837162837,-0.28321678321678323,-0.2827172827172827,-0.2822177822177822,-0.2817182817182817,-0.28121878121878124,-0.2807192807192807,-0.2802197802197802,-0.27972027972027974,-0.2792207792207792,-0.2787212787212787,-0.27822177822177824,-0.2777222777222777,-0.2772227772227772,-0.27672327672327673,-0.2762237762237762,-0.2757242757242757,-0.27522477522477523,-0.27472527472527475,-0.2742257742257742,-0.27372627372627373,-0.27322677322677325,-0.2727272727272727,-0.2722277722277722,-0.27172827172827174,-0.2712287712287712,-0.2707292707292707,-0.27022977022977024,-0.26973026973026976,-0.2692307692307692,-0.26873126873126874,-0.26823176823176825,-0.2677322677322677,-0.26723276723276723,-0.26673326673326675,-0.2662337662337662,-0.26573426573426573,-0.26523476523476525,-0.2647352647352647,-0.2642357642357642,-0.26373626373626374,-0.26323676323676326,-0.2627372627372627,-0.26223776223776224,-0.26173826173826176,-0.2612387612387612,-0.26073926073926074,-0.26023976023976025,-0.2597402597402597,-0.25924075924075923,-0.25874125874125875,-0.25824175824175827,-0.25774225774225773,-0.25724275724275725,-0.25674325674325676,-0.2562437562437562,-0.25574425574425574,-0.25524475524475526,-0.2547452547452547,-0.25424575424575424,-0.25374625374625376,-0.2532467532467532,-0.25274725274725274,-0.25224775224775225,-0.2517482517482518,-0.25124875124875123,-0.25074925074925075,-0.25024975024975027,-0.24975024975024976,-0.24925074925074925,-0.24875124875124874,-0.24825174825174826,-0.24775224775224775,-0.24725274725274726,-0.24675324675324675,-0.24625374625374624,-0.24575424575424576,-0.24525474525474525,-0.24475524475524477,-0.24425574425574426,-0.24375624375624375,-0.24325674325674326,-0.24275724275724275,-0.24225774225774227,-0.24175824175824176,-0.24125874125874125,-0.24075924075924077,-0.24025974025974026,-0.23976023976023977,-0.23926073926073926,-0.23876123876123875,-0.23826173826173827,-0.23776223776223776,-0.23726273726273725,-0.23676323676323677,-0.23626373626373626,-0.23576423576423577,-0.23526473526473526,-0.23476523476523475,-0.23426573426573427,-0.23376623376623376,-0.23326673326673328,-0.23276723276723277,-0.23226773226773226,-0.23176823176823177,-0.23126873126873126,-0.23076923076923078,-0.23026973026973027,-0.22977022977022976,-0.22927072927072928,-0.22877122877122877,-0.22827172827172826,-0.22777222777222778,-0.22727272727272727,-0.22677322677322678,-0.22627372627372627,-0.22577422577422576,-0.22527472527472528,-0.22477522477522477,-0.2242757242757243,-0.22377622377622378,-0.22327672327672327,-0.22277722277722278,-0.22227772227772227,-0.2217782217782218,-0.22127872127872128,-0.22077922077922077,-0.2202797202797203,-0.21978021978021978,-0.2192807192807193,-0.21878121878121878,-0.21828171828171827,-0.2177822177822178,-0.21728271728271728,-0.21678321678321677,-0.2162837162837163,-0.21578421578421578,-0.2152847152847153,-0.21478521478521478,-0.21428571428571427,-0.2137862137862138,-0.21328671328671328,-0.2127872127872128,-0.2122877122877123,-0.21178821178821178,-0.2112887112887113,-0.21078921078921078,-0.2102897102897103,-0.2097902097902098,-0.20929070929070928,-0.2087912087912088,-0.2082917082917083,-0.2077922077922078,-0.2072927072927073,-0.20679320679320679,-0.2062937062937063,-0.2057942057942058,-0.20529470529470528,-0.2047952047952048,-0.2042957042957043,-0.2037962037962038,-0.2032967032967033,-0.20279720279720279,-0.2022977022977023,-0.2017982017982018,-0.2012987012987013,-0.2007992007992008,-0.2002997002997003,-0.1998001998001998,-0.1993006993006993,-0.19880119880119881,-0.1983016983016983,-0.1978021978021978,-0.1973026973026973,-0.1968031968031968,-0.1963036963036963,-0.1958041958041958,-0.1953046953046953,-0.19480519480519481,-0.1943056943056943,-0.1938061938061938,-0.1933066933066933,-0.1928071928071928,-0.19230769230769232,-0.1918081918081918,-0.1913086913086913,-0.19080919080919082,-0.1903096903096903,-0.18981018981018982,-0.1893106893106893,-0.1888111888111888,-0.18831168831168832,-0.1878121878121878,-0.18731268731268733,-0.18681318681318682,-0.1863136863136863,-0.18581418581418582,-0.1853146853146853,-0.1848151848151848,-0.18431568431568432,-0.1838161838161838,-0.18331668331668333,-0.18281718281718282,-0.1823176823176823,-0.18181818181818182,-0.1813186813186813,-0.18081918081918083,-0.18031968031968032,-0.1798201798201798,-0.17932067932067933,-0.17882117882117882,-0.17832167832167833,-0.17782217782217782,-0.1773226773226773,-0.17682317682317683,-0.17632367632367632,-0.17582417582417584,-0.17532467532467533,-0.17482517482517482,-0.17432567432567433,-0.17382617382617382,-0.17332667332667331,-0.17282717282717283,-0.17232767232767232,-0.17182817182817184,-0.17132867132867133,-0.17082917082917082,-0.17032967032967034,-0.16983016983016982,-0.16933066933066934,-0.16883116883116883,-0.16833166833166832,-0.16783216783216784,-0.16733266733266733,-0.16683316683316685,-0.16633366633366634,-0.16583416583416583,-0.16533466533466534,-0.16483516483516483,-0.16433566433566432,-0.16383616383616384,-0.16333666333666333,-0.16283716283716285,-0.16233766233766234,-0.16183816183816183,-0.16133866133866134,-0.16083916083916083,-0.16033966033966035,-0.15984015984015984,-0.15934065934065933,-0.15884115884115885,-0.15834165834165834,-0.15784215784215785,-0.15734265734265734,-0.15684315684315683,-0.15634365634365635,-0.15584415584415584,-0.15534465534465536,-0.15484515484515485,-0.15434565434565434,-0.15384615384615385,-0.15334665334665334,-0.15284715284715283,-0.15234765234765235,-0.15184815184815184,-0.15134865134865136,-0.15084915084915085,-0.15034965034965034,-0.14985014985014986,-0.14935064935064934,-0.14885114885114886,-0.14835164835164835,-0.14785214785214784,-0.14735264735264736,-0.14685314685314685,-0.14635364635364637,-0.14585414585414586,-0.14535464535464535,-0.14485514485514486,-0.14435564435564435,-0.14385614385614387,-0.14335664335664336,-0.14285714285714285,-0.14235764235764237,-0.14185814185814186,-0.14135864135864135,-0.14085914085914086,-0.14035964035964035,-0.13986013986013987,-0.13936063936063936,-0.13886113886113885,-0.13836163836163837,-0.13786213786213786,-0.13736263736263737,-0.13686313686313686,-0.13636363636363635,-0.13586413586413587,-0.13536463536463536,-0.13486513486513488,-0.13436563436563437,-0.13386613386613386,-0.13336663336663337,-0.13286713286713286,-0.13236763236763235,-0.13186813186813187,-0.13136863136863136,-0.13086913086913088,-0.13036963036963037,-0.12987012987012986,-0.12937062937062938,-0.12887112887112886,-0.12837162837162838,-0.12787212787212787,-0.12737262737262736,-0.12687312687312688,-0.12637362637362637,-0.1258741258741259,-0.12537462537462538,-0.12487512487512488,-0.12437562437562437,-0.12387612387612387,-0.12337662337662338,-0.12287712287712288,-0.12237762237762238,-0.12187812187812187,-0.12137862137862138,-0.12087912087912088,-0.12037962037962038,-0.11988011988011989,-0.11938061938061938,-0.11888111888111888,-0.11838161838161838,-0.11788211788211789,-0.11738261738261738,-0.11688311688311688,-0.11638361638361638,-0.11588411588411589,-0.11538461538461539,-0.11488511488511488,-0.11438561438561438,-0.11388611388611389,-0.11338661338661339,-0.11288711288711288,-0.11238761238761238,-0.11188811188811189,-0.11138861138861139,-0.1108891108891109,-0.11038961038961038,-0.10989010989010989,-0.10939060939060939,-0.1088911088911089,-0.10839160839160839,-0.10789210789210789,-0.10739260739260739,-0.1068931068931069,-0.1063936063936064,-0.10589410589410589,-0.10539460539460539,-0.1048951048951049,-0.1043956043956044,-0.1038961038961039,-0.10339660339660339,-0.1028971028971029,-0.1023976023976024,-0.1018981018981019,-0.10139860139860139,-0.1008991008991009,-0.1003996003996004,-0.0999000999000999,-0.09940059940059941,-0.0989010989010989,-0.0984015984015984,-0.0979020979020979,-0.09740259740259741,-0.0969030969030969,-0.0964035964035964,-0.0959040959040959,-0.09540459540459541,-0.09490509490509491,-0.0944055944055944,-0.0939060939060939,-0.09340659340659341,-0.09290709290709291,-0.0924075924075924,-0.0919080919080919,-0.09140859140859141,-0.09090909090909091,-0.09040959040959042,-0.0899100899100899,-0.08941058941058941,-0.08891108891108891,-0.08841158841158842,-0.08791208791208792,-0.08741258741258741,-0.08691308691308691,-0.08641358641358642,-0.08591408591408592,-0.08541458541458541,-0.08491508491508491,-0.08441558441558442,-0.08391608391608392,-0.08341658341658342,-0.08291708291708291,-0.08241758241758242,-0.08191808191808192,-0.08141858141858142,-0.08091908091908091,-0.08041958041958042,-0.07992007992007992,-0.07942057942057942,-0.07892107892107893,-0.07842157842157842,-0.07792207792207792,-0.07742257742257742,-0.07692307692307693,-0.07642357642357642,-0.07592407592407592,-0.07542457542457542,-0.07492507492507493,-0.07442557442557443,-0.07392607392607392,-0.07342657342657342,-0.07292707292707293,-0.07242757242757243,-0.07192807192807193,-0.07142857142857142,-0.07092907092907093,-0.07042957042957043,-0.06993006993006994,-0.06943056943056942,-0.06893106893106893,-0.06843156843156843,-0.06793206793206794,-0.06743256743256744,-0.06693306693306693,-0.06643356643356643,-0.06593406593406594,-0.06543456543456544,-0.06493506493506493,-0.06443556443556443,-0.06393606393606394,-0.06343656343656344,-0.06293706293706294,-0.06243756243756244,-0.061938061938061936,-0.06143856143856144,-0.060939060939060936,-0.06043956043956044,-0.059940059940059943,-0.05944055944055944,-0.058941058941058944,-0.05844155844155844,-0.057942057942057944,-0.05744255744255744,-0.056943056943056944,-0.05644355644355644,-0.055944055944055944,-0.05544455544455545,-0.054945054945054944,-0.05444555444555445,-0.053946053946053944,-0.05344655344655345,-0.052947052947052944,-0.05244755244755245,-0.05194805194805195,-0.05144855144855145,-0.05094905094905095,-0.05044955044955045,-0.04995004995004995,-0.04945054945054945,-0.04895104895104895,-0.04845154845154845,-0.04795204795204795,-0.047452547452547456,-0.04695304695304695,-0.046453546453546456,-0.04595404595404595,-0.045454545454545456,-0.04495504495504495,-0.044455544455544456,-0.04395604395604396,-0.043456543456543456,-0.04295704295704296,-0.042457542457542456,-0.04195804195804196,-0.041458541458541456,-0.04095904095904096,-0.040459540459540456,-0.03996003996003996,-0.039460539460539464,-0.03896103896103896,-0.038461538461538464,-0.03796203796203796,-0.037462537462537464,-0.03696303696303696,-0.036463536463536464,-0.03596403596403597,-0.035464535464535464,-0.03496503496503497,-0.034465534465534464,-0.03396603396603397,-0.033466533466533464,-0.03296703296703297,-0.032467532467532464,-0.03196803196803197,-0.03146853146853147,-0.030969030969030968,-0.030469530469530468,-0.029970029970029972,-0.029470529470529472,-0.028971028971028972,-0.028471528471528472,-0.027972027972027972,-0.027472527472527472,-0.026973026973026972,-0.026473526473526472,-0.025974025974025976,-0.025474525474525476,-0.024975024975024976,-0.024475524475524476,-0.023976023976023976,-0.023476523476523476,-0.022977022977022976,-0.022477522477522476,-0.02197802197802198,-0.02147852147852148,-0.02097902097902098,-0.02047952047952048,-0.01998001998001998,-0.01948051948051948,-0.01898101898101898,-0.01848151848151848,-0.017982017982017984,-0.017482517482517484,-0.016983016983016984,-0.016483516483516484,-0.015984015984015984,-0.015484515484515484,-0.014985014985014986,-0.014485514485514486,-0.013986013986013986,-0.013486513486513486,-0.012987012987012988,-0.012487512487512488,-0.011988011988011988,-0.011488511488511488,-0.01098901098901099,-0.01048951048951049,-0.00999000999000999,-0.00949050949050949,-0.008991008991008992,-0.008491508491508492,-0.007992007992007992,-0.007492507492507493,-0.006993006993006993,-0.006493506493506494,-0.005994005994005994,-0.005494505494505495,-0.004995004995004995,-0.004495504495504496,-0.003996003996003996,-0.0034965034965034965,-0.002997002997002997,-0.0024975024975024975,-0.001998001998001998,-0.0014985014985014985,-0.000999000999000999,-0.0004995004995004995,0.0]} diff --git a/base/special/acosdf/test/fixtures/julia/positive.json b/base/special/acosdf/test/fixtures/julia/positive.json new file mode 100644 index 000000000..804ec4aca --- /dev/null +++ b/base/special/acosdf/test/fixtures/julia/positive.json @@ -0,0 +1 @@ +{"expected":[90.0,89.97138,89.94276,89.91414,89.88551,89.856895,89.82828,89.79966,89.77104,89.74242,89.7138,89.68518,89.65656,89.627945,89.59933,89.5707,89.54208,89.513466,89.48485,89.45622,89.4276,89.39898,89.37035,89.341736,89.31311,89.28449,89.255875,89.22725,89.19863,89.170006,89.14139,89.11276,89.08414,89.05552,89.02689,88.99827,88.96964,88.941025,88.9124,88.88377,88.85515,88.82652,88.7979,88.76927,88.74065,88.71202,88.68339,88.65476,88.62614,88.59751,88.56888,88.54025,88.51163,88.483,88.45437,88.425735,88.39711,88.36848,88.33984,88.31121,88.28258,88.25395,88.22532,88.196686,88.16805,88.13941,88.11078,88.082146,88.05351,88.02488,87.99624,87.9676,87.93896,87.910324,87.88169,87.85305,87.8244,87.79577,87.76713,87.73849,87.70984,87.681206,87.65256,87.62392,87.595276,87.56663,87.53798,87.50934,87.48069,87.45204,87.42339,87.394745,87.36609,87.33745,87.30879,87.28014,87.25149,87.22284,87.19418,87.16553,87.13688,87.108215,87.07957,87.0509,87.022255,86.99359,86.964935,86.93627,86.907616,86.87895,86.85029,86.821625,86.79296,86.7643,86.735634,86.70696,86.6783,86.649635,86.62096,86.59229,86.56362,86.53495,86.50628,86.47761,86.44894,86.42026,86.39158,86.36291,86.33423,86.30555,86.27687,86.24819,86.219505,86.19083,86.16214,86.13346,86.104774,86.07609,86.0474,86.018715,85.99003,85.961334,85.93264,85.90395,85.87526,85.846565,85.81786,85.78917,85.760475,85.73178,85.70308,85.67438,85.645676,85.616974,85.58827,85.55956,85.53086,85.50215,85.47344,85.44473,85.41602,85.387314,85.3586,85.32988,85.30117,85.27245,85.24374,85.21502,85.1863,85.15758,85.12885,85.10013,85.07141,85.04268,85.013954,84.98522,84.95649,84.927765,84.899025,84.87029,84.84156,84.81283,84.78409,84.75535,84.72661,84.69787,84.66912,84.64037,84.61163,84.582886,84.55414,84.52539,84.496635,84.46789,84.43913,84.41038,84.38162,84.35286,84.324104,84.29534,84.26658,84.23781,84.20905,84.18028,84.15151,84.12274,84.09397,84.0652,84.03642,84.007645,83.978874,83.950096,83.92131,83.89253,83.86375,83.83496,83.806175,83.77739,83.7486,83.71981,83.69102,83.66222,83.63342,83.60462,83.57583,83.54703,83.51823,83.48942,83.46061,83.43181,83.403,83.37419,83.345375,83.31656,83.28774,83.25892,83.2301,83.20128,83.17246,83.14364,83.114815,83.08598,83.05715,83.02832,82.99949,82.97066,82.94182,82.91298,82.88413,82.85529,82.82645,82.79761,82.76876,82.73991,82.71106,82.682205,82.65334,82.6245,82.59563,82.56677,82.53791,82.50904,82.48018,82.45131,82.42244,82.39356,82.36469,82.335815,82.30694,82.27806,82.249176,82.22029,82.19141,82.16251,82.13363,82.10473,82.075836,82.04694,82.01805,81.98914,81.96024,81.931335,81.902435,81.87352,81.84461,81.8157,81.78678,81.757866,81.72894,81.70003,81.67111,81.64217,81.61325,81.58432,81.55539,81.52646,81.49752,81.46858,81.43964,81.4107,81.38175,81.352806,81.32385,81.2949,81.265945,81.23699,81.20804,81.17908,81.150116,81.12115,81.09218,81.06321,81.03424,81.00526,80.97629,80.9473,80.91833,80.889336,80.86036,80.83137,80.802376,80.773384,80.744385,80.715385,80.686386,80.65739,80.62839,80.59937,80.57036,80.54135,80.51234,80.483315,80.4543,80.42528,80.396255,80.367226,80.338196,80.30916,80.28013,80.25109,80.222046,80.19301,80.16396,80.13492,80.105865,80.07681,80.04776,80.0187,79.98964,79.96058,79.93151,79.90244,79.873375,79.8443,79.81522,79.78615,79.757065,79.72798,79.69889,79.6698,79.64071,79.61162,79.58252,79.55341,79.524315,79.49521,79.466095,79.43699,79.407875,79.37876,79.34964,79.32051,79.29139,79.26227,79.23313,79.203995,79.174866,79.14572,79.116585,79.08744,79.05829,79.02914,78.999985,78.970825,78.941666,78.912506,78.88334,78.85417,78.825005,78.79583,78.766655,78.73747,78.70829,78.6791,78.64992,78.62073,78.59153,78.56233,78.53313,78.50393,78.474724,78.44551,78.4163,78.387085,78.357864,78.328636,78.299416,78.27019,78.24096,78.21172,78.18249,78.153244,78.124,78.09475,78.065506,78.036255,78.00699,77.97774,77.94847,77.919205,77.88994,77.860664,77.83139,77.80212,77.772835,77.743546,77.71426,77.68496,77.65567,77.62637,77.59707,77.567764,77.53845,77.50915,77.47983,77.45051,77.42119,77.39187,77.36253,77.333206,77.30387,77.27453,77.24519,77.21584,77.18649,77.15714,77.12779,77.098434,77.06907,77.03971,77.01034,76.980965,76.951584,76.92221,76.89282,76.863434,76.83405,76.80466,76.77525,76.74586,76.716446,76.68704,76.65763,76.62822,76.5988,76.569374,76.53995,76.51052,76.48109,76.45165,76.42221,76.39277,76.36332,76.33387,76.30441,76.27495,76.24549,76.21603,76.186554,76.15708,76.1276,76.09812,76.06864,76.039154,76.00966,75.98016,75.95066,75.92116,75.89165,75.862144,75.83263,75.80311,75.77358,75.74406,75.71453,75.685,75.65546,75.625916,75.59637,75.56682,75.53726,75.507706,75.47814,75.44857,75.41901,75.389435,75.359856,75.33028,75.30069,75.271095,75.2415,75.21191,75.182304,75.152695,75.123085,75.093475,75.06386,75.03423,75.00461,74.97498,74.94534,74.91571,74.88607,74.856415,74.82677,74.79711,74.767456,74.73779,74.70812,74.67845,74.64877,74.61909,74.58941,74.55972,74.53002,74.50033,74.47063,74.440926,74.41121,74.38149,74.35178,74.32206,74.292336,74.262596,74.232864,74.203125,74.17338,74.14362,74.11388,74.084114,74.05435,74.02459,73.99482,73.96504,73.935265,73.90547,73.87569,73.845894,73.81609,73.78629,73.756485,73.72667,73.69685,73.66704,73.63721,73.60738,73.577545,73.547714,73.51786,73.488014,73.45816,73.42831,73.398445,73.368576,73.33871,73.30883,73.27895,73.24907,73.21918,73.189285,73.15938,73.12948,73.09957,73.069664,73.039734,73.00981,72.97988,72.94995,72.92002,72.89008,72.86013,72.83018,72.800224,72.770256,72.740295,72.71033,72.68034,72.65037,72.62038,72.590385,72.560394,72.53039,72.50038,72.47038,72.44036,72.41034,72.38032,72.35028,72.32025,72.290215,72.26016,72.23011,72.20006,72.17,72.13993,72.109856,72.07978,72.0497,72.019615,71.98952,71.95943,71.92933,71.899216,71.8691,71.83899,71.80887,71.77874,71.748604,71.71847,71.688324,71.65817,71.62803,71.59786,71.5677,71.53753,71.507355,71.47717,71.44699,71.4168,71.386604,71.3564,71.3262,71.29598,71.26577,71.23554,71.205315,71.17508,71.144844,71.1146,71.08434,71.05409,71.02383,70.99356,70.963295,70.933014,70.902725,70.872444,70.84215,70.811844,70.78154,70.75123,70.72091,70.69059,70.66026,70.62993,70.599594,70.569244,70.538895,70.50854,70.47818,70.44781,70.41743,70.387054,70.35667,70.32628,70.29588,70.26549,70.23508,70.20466,70.17424,70.143814,70.11338,70.08294,70.052505,70.02206,69.9916,69.961136,69.93067,69.9002,69.86972,69.83924,69.808754,69.77825,69.74775,69.71724,69.68672,69.656204,69.62568,69.59515,69.56461,69.534065,69.50352,69.47296,69.44239,69.41183,69.38125,69.35067,69.32008,69.28949,69.258896,69.22829,69.19768,69.16705,69.13643,69.105804,69.07516,69.04452,69.01387,68.983215,68.95255,68.92188,68.89121,68.86053,68.82984,68.79915,68.76845,68.73774,68.70702,68.67631,68.645584,68.614845,68.584114,68.55337,68.52262,68.49186,68.46109,68.43032,68.39954,68.36876,68.337975,68.307175,68.27637,68.24556,68.214745,68.183914,68.15308,68.12225,68.09141,68.060555,68.0297,67.99883,67.967964,67.93709,67.906204,67.87531,67.84441,67.813515,67.7826,67.75168,67.72076,67.68983,67.65889,67.62794,67.59699,67.56603,67.535065,67.5041,67.473114,67.44212,67.41113,67.380135,67.34912,67.31811,67.28709,67.25606,67.22503,67.19398,67.162926,67.131874,67.10081,67.06973,67.03866,67.007576,66.97648,66.94539,66.914276,66.88316,66.852036,66.820915,66.78977,66.75864,66.72748,66.69632,66.66515,66.63398,66.602806,66.57162,66.54042,66.509224,66.47801,66.44679,66.41557,66.38434,66.353096,66.32185,66.2906,66.25934,66.22807,66.1968,66.16551,66.13422,66.10292,66.07161,66.040306,66.00898,65.97765,65.94631,65.91497,65.88362,65.85226,65.82089,65.78951,65.75813,65.726746,65.695335,65.66393,65.63252,65.6011,65.56967,65.53823,65.50678,65.475334,65.44387,65.41241,65.38092,65.34944,65.31795,65.286446,65.254944,65.22342,65.191895,65.16036,65.12882,65.097275,65.06572,65.03415,65.00258,64.97099,64.93941,64.90781,64.876205,64.84459,64.81297,64.781334,64.749695,64.718056,64.68639,64.65474,64.62307,64.591385,64.55969,64.528,64.49629,64.46458,64.43286,64.40112,64.36939,64.33765,64.305885,64.274124,64.242355,64.21057,64.17878,64.14698,64.11517,64.08336,64.05154,64.0197,63.987865,63.956017,63.92416,63.892292,63.860413,63.82853,63.796642,63.764736,63.732826,63.70091,63.668976,63.637047,63.605095,63.573143,63.54118,63.509205,63.477226,63.445236,63.413235,63.38123,63.34921,63.31719,63.285156,63.25311,63.221054,63.18899,63.156925,63.124844,63.09275,63.060654,63.028545,62.99643,62.964302,62.93217,62.90003,62.86787,62.83571,62.80354,62.771362,62.739162,62.706966,62.674755,62.642536,62.610306,62.578075,62.54583,62.51357,62.481304,62.44903,62.416744,62.384453,62.35215,62.31983,62.28751,62.255177,62.222836,62.190487,62.158127,62.12576,62.09337,62.06098,62.028584,61.996174,61.963753,61.931324,61.898888,61.866436,61.83398,61.80151,61.76903,61.736546,61.70405,61.671535,61.639027,61.60649,61.573956,61.54141,61.50885,61.476284,61.443703,61.411114,61.378513,61.34591,61.313293,61.28066,61.248024,61.215374,61.182713,61.150043,61.117363,61.084675,61.05197,61.019268,60.986546,60.953808,60.92107,60.88832,60.855556,60.822777,60.789997,60.757206,60.724396,60.69158,60.658756,60.625923,60.59308,60.56022,60.52735,60.49447,60.461582,60.42868,60.395767,60.362846,60.329918,60.296974,60.26402,60.23105,60.198082,60.165096,60.132095,60.09909,60.066074,60.033035,60.0,59.966946,59.933884,59.900803,59.867718,59.834625,59.80152,59.768402,59.735268,59.702126,59.66898,59.63581,59.60264,59.56945,59.536255,59.503048,59.469826,59.436596,59.403355,59.3701,59.336826,59.30355,59.270267,59.23697,59.20366,59.17033,59.136997,59.103653,59.070293,59.036922,59.003544,58.97015,58.93675,58.903328,58.869904,58.836464,58.803013,58.769547,58.736073,58.702583,58.669086,58.63558,58.60205,58.568512,58.53497,58.501415,58.467842,58.434254,58.40066,58.367058,58.33344,58.2998,58.266163,58.232502,58.198837,58.16515,58.131462,58.097755,58.06404,58.030308,57.996567,57.962814,57.929043,57.895267,57.861473,57.82767,57.793854,57.760025,57.72618,57.69232,57.65846,57.624577,57.590683,57.556778,57.52286,57.488926,57.454987,57.42103,57.387054,57.353073,57.31908,57.285072,57.251045,57.217014,57.182964,57.148907,57.11483,57.080746,57.046646,57.01253,56.97841,56.944263,56.910114,56.87595,56.84177,56.807575,56.77337,56.73915,56.704918,56.670666,56.63641,56.602135,56.567852,56.53355,56.499237,56.46491,56.43057,56.396214,56.361843,56.32746,56.293068,56.25866,56.22423,56.189796,56.155346,56.12088,56.086403,56.051907,56.0174,55.98288,55.94835,55.91379,55.879234,55.844654,55.810062,55.77546,55.740837,55.706203,55.671555,55.636894,55.602215,55.567524,55.532818,55.498096,55.46336,55.42861,55.39385,55.359074,55.32428,55.28947,55.254646,55.21981,55.18496,55.15009,55.11521,55.080315,55.045406,55.01048,54.975536,54.940582,54.905613,54.87063,54.835625,54.80061,54.76558,54.730534,54.69547,54.660397,54.625305,54.5902,54.555077,54.519936,54.484783,54.449615,54.414433,54.37923,54.344017,54.308792,54.273544,54.238285,54.203007,54.167713,54.132404,54.097084,54.06174,54.026382,53.991013,53.95563,53.920223,53.884804,53.84937,53.81392,53.77845,53.742966,53.70747,53.67195,53.63642,53.60087,53.565308,53.529728,53.49413,53.458515,53.422886,53.38724,53.351578,53.3159,53.2802,53.24449,53.208763,53.173016,53.137253,53.101475,53.06568,53.029865,52.994038,52.95819,52.922325,52.886444,52.850548,52.814632,52.7787,52.742756,52.70679,52.670803,52.634804,52.59879,52.56275,52.526703,52.49063,52.45454,52.41844,52.38232,52.346176,52.31002,52.273846,52.23765,52.201447,52.16521,52.128967,52.092705,52.056427,52.020123,51.983807,51.94747,51.911118,51.874744,51.838356,51.80195,51.765522,51.72908,51.692616,51.656136,51.619637,51.58312,51.54658,51.510025,51.473454,51.436863,51.400253,51.36362,51.326973,51.29031,51.253624,51.216915,51.18019,51.14345,51.106693,51.06991,51.03311,50.996292,50.959454,50.9226,50.88572,50.848827,50.811913,50.77498,50.73802,50.70105,50.66406,50.627045,50.590015,50.552963,50.515892,50.4788,50.441692,50.404556,50.36741,50.33024,50.29305,50.255836,50.218605,50.181355,50.144085,50.106792,50.069477,50.032146,49.994797,49.957424,49.920025,49.882614,49.84518,49.807728,49.77025,49.732754,49.695236,49.6577,49.62014,49.582558,49.544956,49.507336,49.469696,49.432026,49.39434,49.356636,49.31891,49.281162,49.243385,49.205597,49.16778,49.129948,49.092083,49.054207,49.016308,48.978386,48.940437,48.902473,48.864487,48.826477,48.788445,48.750385,48.71231,48.674213,48.636093,48.597946,48.559784,48.521595,48.483383,48.445152,48.406895,48.368618,48.33032,48.291992,48.253643,48.21527,48.176884,48.138466,48.100025,48.06156,48.02308,47.984573,47.94604,47.907482,47.868904,47.830303,47.79168,47.753025,47.71435,47.675655,47.636936,47.598194,47.55942,47.52063,47.48181,47.442974,47.404106,47.365215,47.3263,47.28737,47.2484,47.209415,47.170403,47.13137,47.092308,47.05322,47.01411,46.974976,46.935818,46.89663,46.857418,46.818184,46.778923,46.739635,46.70032,46.660988,46.621624,46.58224,46.542824,46.503384,46.46392,46.42443,46.384907,46.345367,46.3058,46.266205,46.226585,46.186935,46.147263,46.107563,46.067837,46.02808,45.9883,45.948494,45.908665,45.868797,45.828915,45.788998,45.749058,45.70909,45.669094,45.62907,45.58902,45.548943,45.50884,45.468704,45.428547,45.388355,45.348145,45.30789,45.267624,45.227325,45.187,45.146637,45.10625,45.06584,45.025402,44.98493,44.944427,44.903904,44.863346,44.822765,44.782146,44.741505,44.700832,44.660133,44.6194,44.57864,44.53785,44.497032,44.456184,44.415302,44.374397,44.33346,44.292492,44.25149,44.21047,44.169407,44.12832,44.0872,44.04605,44.00487,43.96366,43.92242,43.881145,43.839844,43.798508,43.757145,43.715744,43.674316,43.63286,43.59137,43.549847,43.50829,43.4667,43.425087,43.38344,43.341755,43.30004,43.258297,43.21652,43.1747,43.132862,43.090984,43.04908,43.007137,42.96516,42.923153,42.881115,42.83904,42.79693,42.75479,42.712616,42.67041,42.628162,42.585888,42.54358,42.501236,42.458862,42.416443,42.374,42.33152,42.289005,42.24645,42.203865,42.161247,42.11859,42.0759,42.033173,41.990414,41.947617,41.904785,41.861916,41.81901,41.776073,41.7331,41.690083,41.647034,41.603954,41.560833,41.517677,41.474476,41.431248,41.38798,41.344677,41.30133,41.257954,41.21454,41.17108,41.12759,41.084057,41.040485,40.996883,40.95324,40.909554,40.865833,40.82207,40.778275,40.734432,40.690556,40.64664,40.602688,40.558697,40.51466,40.470585,40.426476,40.38232,40.338123,40.293888,40.249615,40.205307,40.16095,40.11655,40.072117,40.027637,39.983124,39.93856,39.89396,39.849316,39.804634,39.759903,39.715134,39.670322,39.625473,39.580578,39.535637,39.490654,39.445633,39.40057,39.355457,39.310303,39.265106,39.219868,39.17458,39.129253,39.08388,39.038467,38.993004,38.947495,38.901947,38.856354,38.810715,38.765022,38.719296,38.67352,38.6277,38.58183,38.53591,38.489952,38.443947,38.397892,38.35179,38.305645,38.25945,38.213207,38.166916,38.120583,38.074196,38.027767,37.981285,37.934753,37.888176,37.841553,37.79488,37.74815,37.701378,37.654556,37.607685,37.560764,37.513786,37.466766,37.419693,37.37257,37.325394,37.27817,37.230896,37.183563,37.13618,37.088753,37.041267,36.993736,36.946148,36.898502,36.85081,36.803066,36.75527,36.70741,36.659504,36.611546,36.56353,36.515465,36.467335,36.41916,36.370926,36.32264,36.27429,36.22589,36.177437,36.12893,36.080357,36.03173,35.983055,35.934315,35.88552,35.836662,35.787754,35.738785,35.68976,35.64067,35.591526,35.542324,35.49306,35.44374,35.394356,35.344917,35.295418,35.245853,35.196224,35.14654,35.096798,35.046993,34.997124,34.94719,34.8972,34.847145,34.797028,34.74684,34.696598,34.64629,34.595917,34.545475,34.494976,34.44441,34.39378,34.34308,34.292316,34.24149,34.190594,34.139633,34.0886,34.037506,33.986343,33.935112,33.88381,33.832443,33.781002,33.7295,33.677925,33.626278,33.574562,33.522778,33.470924,33.41899,33.366993,33.314922,33.26278,33.21056,33.15827,33.10591,33.05348,33.000973,32.948383,32.89573,32.843,32.790188,32.737305,32.684345,32.63131,32.578197,32.52501,32.471737,32.418396,32.36497,32.31147,32.257885,32.204224,32.150486,32.096664,32.04276,31.988775,31.934715,31.88057,31.82634,31.772024,31.71763,31.663153,31.608591,31.553938,31.499208,31.444393,31.389492,31.334501,31.27942,31.224257,31.169006,31.113668,31.058235,31.002716,30.947111,30.891415,30.83562,30.779741,30.72377,30.667711,30.611553,30.5553,30.498959,30.442524,30.385994,30.329361,30.27264,30.21582,30.158907,30.101885,30.044775,29.987568,29.93026,29.872852,29.815334,29.757725,29.700018,29.642202,29.58428,29.52626,29.46814,29.409912,29.351578,29.293137,29.23459,29.175938,29.11718,29.058304,28.999329,28.94024,28.881044,28.82173,28.762308,28.702776,28.643131,28.583372,28.52349,28.463501,28.403395,28.343172,28.282827,28.222368,28.16179,28.101091,28.040274,27.979328,27.918266,27.857082,27.795774,27.734333,27.672775,27.61109,27.549276,27.48733,27.425259,27.36306,27.300732,27.238268,27.175667,27.112938,27.050077,26.987078,26.923939,26.860666,26.797256,26.73371,26.67002,26.60618,26.54221,26.478092,26.413832,26.34942,26.284868,26.220167,26.15532,26.090313,26.025164,25.959864,25.89441,25.8288,25.76303,25.697107,25.631027,25.564789,25.498383,25.431822,25.365097,25.29821,25.231155,25.163929,25.09654,25.02898,24.96125,24.893341,24.825266,24.757015,24.688587,24.619972,24.551188,24.48222,24.413069,24.343735,24.274206,24.204498,24.134602,24.064514,23.994225,23.92375,23.85308,23.782211,23.711136,23.639868,23.568394,23.49672,23.424835,23.352734,23.280428,23.207912,23.135183,23.062227,22.98906,22.915672,22.842062,22.768229,22.694157,22.619862,22.545338,22.47058,22.395576,22.320341,22.244865,22.169147,22.093172,22.016956,21.94049,21.86377,21.786793,21.709545,21.632046,21.554281,21.476248,21.397934,21.319357,21.240501,21.161366,21.081947,21.002234,20.922237,20.84195,20.761364,20.68047,20.599281,20.517784,20.435978,20.353846,20.271406,20.188643,20.105555,20.022135,19.938372,19.854279,19.769842,19.685057,19.59991,19.514418,19.428564,19.342344,19.255753,19.168774,19.081423,18.993689,18.905558,18.817022,18.728092,18.638756,18.549002,18.458817,18.368216,18.27718,18.185705,18.093784,18.001398,17.908562,17.815258,17.72148,17.627207,17.532454,17.437202,17.341444,17.24516,17.148363,17.051033,16.953161,16.854738,16.755741,16.656183,16.556046,16.455315,16.35397,16.252022,16.149448,16.046236,15.942372,15.837835,15.732633,15.6267395,15.520143,15.412813,15.304763,15.195963,15.086396,14.976034,14.864884,14.752917,14.640114,14.526451,14.411899,14.296462,14.180105,14.062806,13.944527,13.825269,13.704994,13.583674,13.461283,13.337774,13.213147,13.087355,12.960362,12.83212,12.7026205,12.57181,12.439645,12.306068,12.171063,12.034569,11.896531,11.756896,11.61559,11.472585,11.327798,11.181163,11.032584,10.882023,10.729374,10.574547,10.417447,10.257948,10.095977,9.931393,9.764063,9.593823,9.420558,9.244075,9.064187,8.880665,8.693324,8.501888,8.306075,8.105566,7.89998,7.6889606,7.47202,7.2486277,7.01814,6.77989,6.532999,6.276448,6.008999,5.729092,5.434874,5.1238437,4.7927275,4.436987,4.0502353,3.6225007,3.1370625,2.5612433,1.810997,0.0],"x":[0.0,0.0004995004995004995,0.000999000999000999,0.0014985014985014985,0.001998001998001998,0.0024975024975024975,0.002997002997002997,0.0034965034965034965,0.003996003996003996,0.004495504495504496,0.004995004995004995,0.005494505494505495,0.005994005994005994,0.006493506493506494,0.006993006993006993,0.007492507492507493,0.007992007992007992,0.008491508491508492,0.008991008991008992,0.00949050949050949,0.00999000999000999,0.01048951048951049,0.01098901098901099,0.011488511488511488,0.011988011988011988,0.012487512487512488,0.012987012987012988,0.013486513486513486,0.013986013986013986,0.014485514485514486,0.014985014985014986,0.015484515484515484,0.015984015984015984,0.016483516483516484,0.016983016983016984,0.017482517482517484,0.017982017982017984,0.01848151848151848,0.01898101898101898,0.01948051948051948,0.01998001998001998,0.02047952047952048,0.02097902097902098,0.02147852147852148,0.02197802197802198,0.022477522477522476,0.022977022977022976,0.023476523476523476,0.023976023976023976,0.024475524475524476,0.024975024975024976,0.025474525474525476,0.025974025974025976,0.026473526473526472,0.026973026973026972,0.027472527472527472,0.027972027972027972,0.028471528471528472,0.028971028971028972,0.029470529470529472,0.029970029970029972,0.030469530469530468,0.030969030969030968,0.03146853146853147,0.03196803196803197,0.032467532467532464,0.03296703296703297,0.033466533466533464,0.03396603396603397,0.034465534465534464,0.03496503496503497,0.035464535464535464,0.03596403596403597,0.036463536463536464,0.03696303696303696,0.037462537462537464,0.03796203796203796,0.038461538461538464,0.03896103896103896,0.039460539460539464,0.03996003996003996,0.040459540459540456,0.04095904095904096,0.041458541458541456,0.04195804195804196,0.042457542457542456,0.04295704295704296,0.043456543456543456,0.04395604395604396,0.044455544455544456,0.04495504495504495,0.045454545454545456,0.04595404595404595,0.046453546453546456,0.04695304695304695,0.047452547452547456,0.04795204795204795,0.04845154845154845,0.04895104895104895,0.04945054945054945,0.04995004995004995,0.05044955044955045,0.05094905094905095,0.05144855144855145,0.05194805194805195,0.05244755244755245,0.052947052947052944,0.05344655344655345,0.053946053946053944,0.05444555444555445,0.054945054945054944,0.05544455544455545,0.055944055944055944,0.05644355644355644,0.056943056943056944,0.05744255744255744,0.057942057942057944,0.05844155844155844,0.058941058941058944,0.05944055944055944,0.059940059940059943,0.06043956043956044,0.060939060939060936,0.06143856143856144,0.061938061938061936,0.06243756243756244,0.06293706293706294,0.06343656343656344,0.06393606393606394,0.06443556443556443,0.06493506493506493,0.06543456543456544,0.06593406593406594,0.06643356643356643,0.06693306693306693,0.06743256743256744,0.06793206793206794,0.06843156843156843,0.06893106893106893,0.06943056943056942,0.06993006993006994,0.07042957042957043,0.07092907092907093,0.07142857142857142,0.07192807192807193,0.07242757242757243,0.07292707292707293,0.07342657342657342,0.07392607392607392,0.07442557442557443,0.07492507492507493,0.07542457542457542,0.07592407592407592,0.07642357642357642,0.07692307692307693,0.07742257742257742,0.07792207792207792,0.07842157842157842,0.07892107892107893,0.07942057942057942,0.07992007992007992,0.08041958041958042,0.08091908091908091,0.08141858141858142,0.08191808191808192,0.08241758241758242,0.08291708291708291,0.08341658341658342,0.08391608391608392,0.08441558441558442,0.08491508491508491,0.08541458541458541,0.08591408591408592,0.08641358641358642,0.08691308691308691,0.08741258741258741,0.08791208791208792,0.08841158841158842,0.08891108891108891,0.08941058941058941,0.0899100899100899,0.09040959040959042,0.09090909090909091,0.09140859140859141,0.0919080919080919,0.0924075924075924,0.09290709290709291,0.09340659340659341,0.0939060939060939,0.0944055944055944,0.09490509490509491,0.09540459540459541,0.0959040959040959,0.0964035964035964,0.0969030969030969,0.09740259740259741,0.0979020979020979,0.0984015984015984,0.0989010989010989,0.09940059940059941,0.0999000999000999,0.1003996003996004,0.1008991008991009,0.10139860139860139,0.1018981018981019,0.1023976023976024,0.1028971028971029,0.10339660339660339,0.1038961038961039,0.1043956043956044,0.1048951048951049,0.10539460539460539,0.10589410589410589,0.1063936063936064,0.1068931068931069,0.10739260739260739,0.10789210789210789,0.10839160839160839,0.1088911088911089,0.10939060939060939,0.10989010989010989,0.11038961038961038,0.1108891108891109,0.11138861138861139,0.11188811188811189,0.11238761238761238,0.11288711288711288,0.11338661338661339,0.11388611388611389,0.11438561438561438,0.11488511488511488,0.11538461538461539,0.11588411588411589,0.11638361638361638,0.11688311688311688,0.11738261738261738,0.11788211788211789,0.11838161838161838,0.11888111888111888,0.11938061938061938,0.11988011988011989,0.12037962037962038,0.12087912087912088,0.12137862137862138,0.12187812187812187,0.12237762237762238,0.12287712287712288,0.12337662337662338,0.12387612387612387,0.12437562437562437,0.12487512487512488,0.12537462537462538,0.1258741258741259,0.12637362637362637,0.12687312687312688,0.12737262737262736,0.12787212787212787,0.12837162837162838,0.12887112887112886,0.12937062937062938,0.12987012987012986,0.13036963036963037,0.13086913086913088,0.13136863136863136,0.13186813186813187,0.13236763236763235,0.13286713286713286,0.13336663336663337,0.13386613386613386,0.13436563436563437,0.13486513486513488,0.13536463536463536,0.13586413586413587,0.13636363636363635,0.13686313686313686,0.13736263736263737,0.13786213786213786,0.13836163836163837,0.13886113886113885,0.13936063936063936,0.13986013986013987,0.14035964035964035,0.14085914085914086,0.14135864135864135,0.14185814185814186,0.14235764235764237,0.14285714285714285,0.14335664335664336,0.14385614385614387,0.14435564435564435,0.14485514485514486,0.14535464535464535,0.14585414585414586,0.14635364635364637,0.14685314685314685,0.14735264735264736,0.14785214785214784,0.14835164835164835,0.14885114885114886,0.14935064935064934,0.14985014985014986,0.15034965034965034,0.15084915084915085,0.15134865134865136,0.15184815184815184,0.15234765234765235,0.15284715284715283,0.15334665334665334,0.15384615384615385,0.15434565434565434,0.15484515484515485,0.15534465534465536,0.15584415584415584,0.15634365634365635,0.15684315684315683,0.15734265734265734,0.15784215784215785,0.15834165834165834,0.15884115884115885,0.15934065934065933,0.15984015984015984,0.16033966033966035,0.16083916083916083,0.16133866133866134,0.16183816183816183,0.16233766233766234,0.16283716283716285,0.16333666333666333,0.16383616383616384,0.16433566433566432,0.16483516483516483,0.16533466533466534,0.16583416583416583,0.16633366633366634,0.16683316683316685,0.16733266733266733,0.16783216783216784,0.16833166833166832,0.16883116883116883,0.16933066933066934,0.16983016983016982,0.17032967032967034,0.17082917082917082,0.17132867132867133,0.17182817182817184,0.17232767232767232,0.17282717282717283,0.17332667332667331,0.17382617382617382,0.17432567432567433,0.17482517482517482,0.17532467532467533,0.17582417582417584,0.17632367632367632,0.17682317682317683,0.1773226773226773,0.17782217782217782,0.17832167832167833,0.17882117882117882,0.17932067932067933,0.1798201798201798,0.18031968031968032,0.18081918081918083,0.1813186813186813,0.18181818181818182,0.1823176823176823,0.18281718281718282,0.18331668331668333,0.1838161838161838,0.18431568431568432,0.1848151848151848,0.1853146853146853,0.18581418581418582,0.1863136863136863,0.18681318681318682,0.18731268731268733,0.1878121878121878,0.18831168831168832,0.1888111888111888,0.1893106893106893,0.18981018981018982,0.1903096903096903,0.19080919080919082,0.1913086913086913,0.1918081918081918,0.19230769230769232,0.1928071928071928,0.1933066933066933,0.1938061938061938,0.1943056943056943,0.19480519480519481,0.1953046953046953,0.1958041958041958,0.1963036963036963,0.1968031968031968,0.1973026973026973,0.1978021978021978,0.1983016983016983,0.19880119880119881,0.1993006993006993,0.1998001998001998,0.2002997002997003,0.2007992007992008,0.2012987012987013,0.2017982017982018,0.2022977022977023,0.20279720279720279,0.2032967032967033,0.2037962037962038,0.2042957042957043,0.2047952047952048,0.20529470529470528,0.2057942057942058,0.2062937062937063,0.20679320679320679,0.2072927072927073,0.2077922077922078,0.2082917082917083,0.2087912087912088,0.20929070929070928,0.2097902097902098,0.2102897102897103,0.21078921078921078,0.2112887112887113,0.21178821178821178,0.2122877122877123,0.2127872127872128,0.21328671328671328,0.2137862137862138,0.21428571428571427,0.21478521478521478,0.2152847152847153,0.21578421578421578,0.2162837162837163,0.21678321678321677,0.21728271728271728,0.2177822177822178,0.21828171828171827,0.21878121878121878,0.2192807192807193,0.21978021978021978,0.2202797202797203,0.22077922077922077,0.22127872127872128,0.2217782217782218,0.22227772227772227,0.22277722277722278,0.22327672327672327,0.22377622377622378,0.2242757242757243,0.22477522477522477,0.22527472527472528,0.22577422577422576,0.22627372627372627,0.22677322677322678,0.22727272727272727,0.22777222777222778,0.22827172827172826,0.22877122877122877,0.22927072927072928,0.22977022977022976,0.23026973026973027,0.23076923076923078,0.23126873126873126,0.23176823176823177,0.23226773226773226,0.23276723276723277,0.23326673326673328,0.23376623376623376,0.23426573426573427,0.23476523476523475,0.23526473526473526,0.23576423576423577,0.23626373626373626,0.23676323676323677,0.23726273726273725,0.23776223776223776,0.23826173826173827,0.23876123876123875,0.23926073926073926,0.23976023976023977,0.24025974025974026,0.24075924075924077,0.24125874125874125,0.24175824175824176,0.24225774225774227,0.24275724275724275,0.24325674325674326,0.24375624375624375,0.24425574425574426,0.24475524475524477,0.24525474525474525,0.24575424575424576,0.24625374625374624,0.24675324675324675,0.24725274725274726,0.24775224775224775,0.24825174825174826,0.24875124875124874,0.24925074925074925,0.24975024975024976,0.25024975024975027,0.25074925074925075,0.25124875124875123,0.2517482517482518,0.25224775224775225,0.25274725274725274,0.2532467532467532,0.25374625374625376,0.25424575424575424,0.2547452547452547,0.25524475524475526,0.25574425574425574,0.2562437562437562,0.25674325674325676,0.25724275724275725,0.25774225774225773,0.25824175824175827,0.25874125874125875,0.25924075924075923,0.2597402597402597,0.26023976023976025,0.26073926073926074,0.2612387612387612,0.26173826173826176,0.26223776223776224,0.2627372627372627,0.26323676323676326,0.26373626373626374,0.2642357642357642,0.2647352647352647,0.26523476523476525,0.26573426573426573,0.2662337662337662,0.26673326673326675,0.26723276723276723,0.2677322677322677,0.26823176823176825,0.26873126873126874,0.2692307692307692,0.26973026973026976,0.27022977022977024,0.2707292707292707,0.2712287712287712,0.27172827172827174,0.2722277722277722,0.2727272727272727,0.27322677322677325,0.27372627372627373,0.2742257742257742,0.27472527472527475,0.27522477522477523,0.2757242757242757,0.2762237762237762,0.27672327672327673,0.2772227772227772,0.2777222777222777,0.27822177822177824,0.2787212787212787,0.2792207792207792,0.27972027972027974,0.2802197802197802,0.2807192807192807,0.28121878121878124,0.2817182817182817,0.2822177822177822,0.2827172827172827,0.28321678321678323,0.2837162837162837,0.2842157842157842,0.28471528471528473,0.2852147852147852,0.2857142857142857,0.28621378621378624,0.2867132867132867,0.2872127872127872,0.28771228771228774,0.2882117882117882,0.2887112887112887,0.2892107892107892,0.2897102897102897,0.2902097902097902,0.2907092907092907,0.29120879120879123,0.2917082917082917,0.2922077922077922,0.29270729270729273,0.2932067932067932,0.2937062937062937,0.2942057942057942,0.2947052947052947,0.2952047952047952,0.2957042957042957,0.2962037962037962,0.2967032967032967,0.2972027972027972,0.2977022977022977,0.2982017982017982,0.2987012987012987,0.29920079920079923,0.2997002997002997,0.3001998001998002,0.3006993006993007,0.3011988011988012,0.3016983016983017,0.3021978021978022,0.3026973026973027,0.3031968031968032,0.3036963036963037,0.3041958041958042,0.3046953046953047,0.3051948051948052,0.30569430569430567,0.3061938061938062,0.3066933066933067,0.30719280719280717,0.3076923076923077,0.3081918081918082,0.3086913086913087,0.3091908091908092,0.3096903096903097,0.3101898101898102,0.3106893106893107,0.3111888111888112,0.3116883116883117,0.31218781218781216,0.3126873126873127,0.3131868131868132,0.31368631368631367,0.3141858141858142,0.3146853146853147,0.31518481518481517,0.3156843156843157,0.3161838161838162,0.3166833166833167,0.31718281718281716,0.3176823176823177,0.3181818181818182,0.31868131868131866,0.3191808191808192,0.3196803196803197,0.32017982017982016,0.3206793206793207,0.3211788211788212,0.32167832167832167,0.3221778221778222,0.3226773226773227,0.32317682317682317,0.32367632367632365,0.3241758241758242,0.3246753246753247,0.32517482517482516,0.3256743256743257,0.3261738261738262,0.32667332667332666,0.3271728271728272,0.3276723276723277,0.32817182817182816,0.32867132867132864,0.3291708291708292,0.32967032967032966,0.33016983016983015,0.3306693306693307,0.33116883116883117,0.33166833166833165,0.3321678321678322,0.33266733266733267,0.33316683316683315,0.3336663336663337,0.3341658341658342,0.33466533466533466,0.33516483516483514,0.3356643356643357,0.33616383616383616,0.33666333666333664,0.3371628371628372,0.33766233766233766,0.33816183816183815,0.3386613386613387,0.33916083916083917,0.33966033966033965,0.34015984015984013,0.34065934065934067,0.34115884115884115,0.34165834165834164,0.3421578421578422,0.34265734265734266,0.34315684315684314,0.3436563436563437,0.34415584415584416,0.34465534465534464,0.3451548451548452,0.34565434565434566,0.34615384615384615,0.34665334665334663,0.34715284715284717,0.34765234765234765,0.34815184815184813,0.34865134865134867,0.34915084915084915,0.34965034965034963,0.3501498501498502,0.35064935064935066,0.35114885114885114,0.3516483516483517,0.35214785214785216,0.35264735264735264,0.3531468531468531,0.35364635364635366,0.35414585414585414,0.3546453546453546,0.35514485514485516,0.35564435564435565,0.35614385614385613,0.35664335664335667,0.35714285714285715,0.35764235764235763,0.3581418581418581,0.35864135864135865,0.35914085914085914,0.3596403596403596,0.36013986013986016,0.36063936063936064,0.3611388611388611,0.36163836163836166,0.36213786213786214,0.3626373626373626,0.36313686313686316,0.36363636363636365,0.36413586413586413,0.3646353646353646,0.36513486513486515,0.36563436563436563,0.3661338661338661,0.36663336663336665,0.36713286713286714,0.3676323676323676,0.36813186813186816,0.36863136863136864,0.3691308691308691,0.3696303696303696,0.37012987012987014,0.3706293706293706,0.3711288711288711,0.37162837162837165,0.37212787212787213,0.3726273726273726,0.37312687312687315,0.37362637362637363,0.3741258741258741,0.37462537462537465,0.37512487512487513,0.3756243756243756,0.3761238761238761,0.37662337662337664,0.3771228771228771,0.3776223776223776,0.37812187812187814,0.3786213786213786,0.3791208791208791,0.37962037962037964,0.3801198801198801,0.3806193806193806,0.3811188811188811,0.38161838161838163,0.3821178821178821,0.3826173826173826,0.38311688311688313,0.3836163836163836,0.3841158841158841,0.38461538461538464,0.3851148851148851,0.3856143856143856,0.38611388611388614,0.3866133866133866,0.3871128871128871,0.3876123876123876,0.3881118881118881,0.3886113886113886,0.3891108891108891,0.38961038961038963,0.3901098901098901,0.3906093906093906,0.39110889110889113,0.3916083916083916,0.3921078921078921,0.3926073926073926,0.3931068931068931,0.3936063936063936,0.3941058941058941,0.3946053946053946,0.3951048951048951,0.3956043956043956,0.3961038961038961,0.3966033966033966,0.3971028971028971,0.39760239760239763,0.3981018981018981,0.3986013986013986,0.3991008991008991,0.3996003996003996,0.4000999000999001,0.4005994005994006,0.4010989010989011,0.4015984015984016,0.4020979020979021,0.4025974025974026,0.4030969030969031,0.4035964035964036,0.40409590409590407,0.4045954045954046,0.4050949050949051,0.40559440559440557,0.4060939060939061,0.4065934065934066,0.4070929070929071,0.4075924075924076,0.4080919080919081,0.4085914085914086,0.4090909090909091,0.4095904095904096,0.4100899100899101,0.41058941058941056,0.4110889110889111,0.4115884115884116,0.41208791208791207,0.4125874125874126,0.4130869130869131,0.41358641358641357,0.4140859140859141,0.4145854145854146,0.4150849150849151,0.4155844155844156,0.4160839160839161,0.4165834165834166,0.41708291708291706,0.4175824175824176,0.4180819180819181,0.41858141858141856,0.4190809190809191,0.4195804195804196,0.42007992007992007,0.4205794205794206,0.4210789210789211,0.42157842157842157,0.42207792207792205,0.4225774225774226,0.4230769230769231,0.42357642357642356,0.4240759240759241,0.4245754245754246,0.42507492507492506,0.4255744255744256,0.4260739260739261,0.42657342657342656,0.4270729270729271,0.4275724275724276,0.42807192807192807,0.42857142857142855,0.4290709290709291,0.42957042957042957,0.43006993006993005,0.4305694305694306,0.43106893106893107,0.43156843156843155,0.4320679320679321,0.4325674325674326,0.43306693306693306,0.43356643356643354,0.4340659340659341,0.43456543456543456,0.43506493506493504,0.4355644355644356,0.43606393606393606,0.43656343656343655,0.4370629370629371,0.43756243756243757,0.43806193806193805,0.4385614385614386,0.43906093906093907,0.43956043956043955,0.44005994005994004,0.4405594405594406,0.44105894105894106,0.44155844155844154,0.4420579420579421,0.44255744255744256,0.44305694305694304,0.4435564435564436,0.44405594405594406,0.44455544455544455,0.44505494505494503,0.44555444555444557,0.44605394605394605,0.44655344655344653,0.44705294705294707,0.44755244755244755,0.44805194805194803,0.4485514485514486,0.44905094905094906,0.44955044955044954,0.4500499500499501,0.45054945054945056,0.45104895104895104,0.4515484515484515,0.45204795204795206,0.45254745254745254,0.453046953046953,0.45354645354645357,0.45404595404595405,0.45454545454545453,0.45504495504495507,0.45554445554445555,0.45604395604395603,0.4565434565434565,0.45704295704295705,0.45754245754245754,0.458041958041958,0.45854145854145856,0.45904095904095904,0.4595404595404595,0.46003996003996006,0.46053946053946054,0.461038961038961,0.46153846153846156,0.46203796203796205,0.46253746253746253,0.463036963036963,0.46353646353646355,0.46403596403596403,0.4645354645354645,0.46503496503496505,0.46553446553446554,0.466033966033966,0.46653346653346656,0.46703296703296704,0.4675324675324675,0.468031968031968,0.46853146853146854,0.469030969030969,0.4695304695304695,0.47002997002997005,0.47052947052947053,0.471028971028971,0.47152847152847155,0.47202797202797203,0.4725274725274725,0.47302697302697305,0.47352647352647353,0.474025974025974,0.4745254745254745,0.47502497502497504,0.4755244755244755,0.476023976023976,0.47652347652347654,0.477022977022977,0.4775224775224775,0.47802197802197804,0.4785214785214785,0.479020979020979,0.47952047952047955,0.48001998001998003,0.4805194805194805,0.481018981018981,0.48151848151848153,0.482017982017982,0.4825174825174825,0.48301698301698304,0.4835164835164835,0.484015984015984,0.48451548451548454,0.485014985014985,0.4855144855144855,0.486013986013986,0.4865134865134865,0.487012987012987,0.4875124875124875,0.48801198801198803,0.4885114885114885,0.489010989010989,0.48951048951048953,0.49000999000999,0.4905094905094905,0.49100899100899104,0.4915084915084915,0.492007992007992,0.4925074925074925,0.493006993006993,0.4935064935064935,0.494005994005994,0.4945054945054945,0.495004995004995,0.4955044955044955,0.49600399600399603,0.4965034965034965,0.497002997002997,0.4975024975024975,0.498001998001998,0.4985014985014985,0.499000999000999,0.4995004995004995,0.5,0.5004995004995005,0.500999000999001,0.5014985014985015,0.501998001998002,0.5024975024975025,0.502997002997003,0.5034965034965035,0.503996003996004,0.5044955044955045,0.504995004995005,0.5054945054945055,0.505994005994006,0.5064935064935064,0.506993006993007,0.5074925074925075,0.5079920079920079,0.5084915084915085,0.508991008991009,0.5094905094905094,0.50999000999001,0.5104895104895105,0.510989010989011,0.5114885114885115,0.511988011988012,0.5124875124875125,0.512987012987013,0.5134865134865135,0.513986013986014,0.5144855144855145,0.514985014985015,0.5154845154845155,0.515984015984016,0.5164835164835165,0.516983016983017,0.5174825174825175,0.5179820179820179,0.5184815184815185,0.518981018981019,0.5194805194805194,0.51998001998002,0.5204795204795205,0.5209790209790209,0.5214785214785215,0.521978021978022,0.5224775224775224,0.522977022977023,0.5234765234765235,0.5239760239760239,0.5244755244755245,0.524975024975025,0.5254745254745254,0.525974025974026,0.5264735264735265,0.526973026973027,0.5274725274725275,0.527972027972028,0.5284715284715285,0.528971028971029,0.5294705294705294,0.52997002997003,0.5304695304695305,0.5309690309690309,0.5314685314685315,0.531968031968032,0.5324675324675324,0.532967032967033,0.5334665334665335,0.5339660339660339,0.5344655344655345,0.534965034965035,0.5354645354645354,0.535964035964036,0.5364635364635365,0.5369630369630369,0.5374625374625375,0.537962037962038,0.5384615384615384,0.538961038961039,0.5394605394605395,0.5399600399600399,0.5404595404595405,0.5409590409590409,0.5414585414585414,0.541958041958042,0.5424575424575424,0.542957042957043,0.5434565434565435,0.5439560439560439,0.5444555444555444,0.544955044955045,0.5454545454545454,0.545954045954046,0.5464535464535465,0.5469530469530469,0.5474525474525475,0.547952047952048,0.5484515484515484,0.548951048951049,0.5494505494505495,0.5499500499500499,0.5504495504495505,0.550949050949051,0.5514485514485514,0.551948051948052,0.5524475524475524,0.5529470529470529,0.5534465534465535,0.5539460539460539,0.5544455544455544,0.554945054945055,0.5554445554445554,0.5559440559440559,0.5564435564435565,0.5569430569430569,0.5574425574425574,0.557942057942058,0.5584415584415584,0.5589410589410589,0.5594405594405595,0.5599400599400599,0.5604395604395604,0.560939060939061,0.5614385614385614,0.561938061938062,0.5624375624375625,0.5629370629370629,0.5634365634365635,0.563936063936064,0.5644355644355644,0.564935064935065,0.5654345654345654,0.5659340659340659,0.5664335664335665,0.5669330669330669,0.5674325674325674,0.567932067932068,0.5684315684315684,0.5689310689310689,0.5694305694305695,0.5699300699300699,0.5704295704295704,0.570929070929071,0.5714285714285714,0.5719280719280719,0.5724275724275725,0.5729270729270729,0.5734265734265734,0.573926073926074,0.5744255744255744,0.5749250749250749,0.5754245754245755,0.5759240759240759,0.5764235764235764,0.5769230769230769,0.5774225774225774,0.577922077922078,0.5784215784215784,0.5789210789210789,0.5794205794205795,0.5799200799200799,0.5804195804195804,0.580919080919081,0.5814185814185814,0.5819180819180819,0.5824175824175825,0.5829170829170829,0.5834165834165834,0.583916083916084,0.5844155844155844,0.5849150849150849,0.5854145854145855,0.5859140859140859,0.5864135864135864,0.586913086913087,0.5874125874125874,0.5879120879120879,0.5884115884115884,0.5889110889110889,0.5894105894105894,0.5899100899100899,0.5904095904095904,0.5909090909090909,0.5914085914085914,0.5919080919080919,0.5924075924075924,0.5929070929070929,0.5934065934065934,0.593906093906094,0.5944055944055944,0.5949050949050949,0.5954045954045954,0.5959040959040959,0.5964035964035964,0.596903096903097,0.5974025974025974,0.5979020979020979,0.5984015984015985,0.5989010989010989,0.5994005994005994,0.5999000999000998,0.6003996003996004,0.6008991008991009,0.6013986013986014,0.6018981018981019,0.6023976023976024,0.6028971028971029,0.6033966033966034,0.6038961038961039,0.6043956043956044,0.6048951048951049,0.6053946053946054,0.6058941058941059,0.6063936063936064,0.6068931068931069,0.6073926073926074,0.6078921078921079,0.6083916083916084,0.6088911088911089,0.6093906093906094,0.6098901098901099,0.6103896103896104,0.6108891108891109,0.6113886113886113,0.6118881118881119,0.6123876123876124,0.6128871128871128,0.6133866133866134,0.6138861138861139,0.6143856143856143,0.6148851148851149,0.6153846153846154,0.6158841158841158,0.6163836163836164,0.6168831168831169,0.6173826173826173,0.6178821178821179,0.6183816183816184,0.6188811188811189,0.6193806193806194,0.6198801198801199,0.6203796203796204,0.6208791208791209,0.6213786213786214,0.6218781218781219,0.6223776223776224,0.6228771228771228,0.6233766233766234,0.6238761238761239,0.6243756243756243,0.6248751248751249,0.6253746253746254,0.6258741258741258,0.6263736263736264,0.6268731268731269,0.6273726273726273,0.6278721278721279,0.6283716283716284,0.6288711288711288,0.6293706293706294,0.6298701298701299,0.6303696303696303,0.6308691308691309,0.6313686313686314,0.6318681318681318,0.6323676323676324,0.6328671328671329,0.6333666333666333,0.6338661338661339,0.6343656343656343,0.6348651348651349,0.6353646353646354,0.6358641358641358,0.6363636363636364,0.6368631368631369,0.6373626373626373,0.6378621378621379,0.6383616383616384,0.6388611388611388,0.6393606393606394,0.6398601398601399,0.6403596403596403,0.6408591408591409,0.6413586413586414,0.6418581418581418,0.6423576423576424,0.6428571428571429,0.6433566433566433,0.6438561438561439,0.6443556443556444,0.6448551448551448,0.6453546453546454,0.6458541458541458,0.6463536463536463,0.6468531468531469,0.6473526473526473,0.6478521478521478,0.6483516483516484,0.6488511488511488,0.6493506493506493,0.6498501498501499,0.6503496503496503,0.6508491508491508,0.6513486513486514,0.6518481518481518,0.6523476523476524,0.6528471528471529,0.6533466533466533,0.6538461538461539,0.6543456543456544,0.6548451548451548,0.6553446553446554,0.6558441558441559,0.6563436563436563,0.6568431568431569,0.6573426573426573,0.6578421578421578,0.6583416583416584,0.6588411588411588,0.6593406593406593,0.6598401598401599,0.6603396603396603,0.6608391608391608,0.6613386613386614,0.6618381618381618,0.6623376623376623,0.6628371628371629,0.6633366633366633,0.6638361638361638,0.6643356643356644,0.6648351648351648,0.6653346653346653,0.6658341658341659,0.6663336663336663,0.6668331668331668,0.6673326673326674,0.6678321678321678,0.6683316683316683,0.6688311688311688,0.6693306693306693,0.6698301698301699,0.6703296703296703,0.6708291708291708,0.6713286713286714,0.6718281718281718,0.6723276723276723,0.6728271728271729,0.6733266733266733,0.6738261738261738,0.6743256743256744,0.6748251748251748,0.6753246753246753,0.6758241758241759,0.6763236763236763,0.6768231768231768,0.6773226773226774,0.6778221778221778,0.6783216783216783,0.6788211788211789,0.6793206793206793,0.6798201798201798,0.6803196803196803,0.6808191808191808,0.6813186813186813,0.6818181818181818,0.6823176823176823,0.6828171828171828,0.6833166833166833,0.6838161838161838,0.6843156843156843,0.6848151848151848,0.6853146853146853,0.6858141858141859,0.6863136863136863,0.6868131868131868,0.6873126873126874,0.6878121878121878,0.6883116883116883,0.6888111888111889,0.6893106893106893,0.6898101898101898,0.6903096903096904,0.6908091908091908,0.6913086913086913,0.6918081918081919,0.6923076923076923,0.6928071928071928,0.6933066933066933,0.6938061938061938,0.6943056943056943,0.6948051948051948,0.6953046953046953,0.6958041958041958,0.6963036963036963,0.6968031968031968,0.6973026973026973,0.6978021978021978,0.6983016983016983,0.6988011988011988,0.6993006993006993,0.6998001998001998,0.7002997002997003,0.7007992007992008,0.7012987012987013,0.7017982017982018,0.7022977022977023,0.7027972027972028,0.7032967032967034,0.7037962037962038,0.7042957042957043,0.7047952047952047,0.7052947052947053,0.7057942057942058,0.7062937062937062,0.7067932067932068,0.7072927072927073,0.7077922077922078,0.7082917082917083,0.7087912087912088,0.7092907092907093,0.7097902097902098,0.7102897102897103,0.7107892107892108,0.7112887112887113,0.7117882117882118,0.7122877122877123,0.7127872127872128,0.7132867132867133,0.7137862137862138,0.7142857142857143,0.7147852147852148,0.7152847152847153,0.7157842157842158,0.7162837162837162,0.7167832167832168,0.7172827172827173,0.7177822177822177,0.7182817182817183,0.7187812187812188,0.7192807192807192,0.7197802197802198,0.7202797202797203,0.7207792207792207,0.7212787212787213,0.7217782217782218,0.7222777222777222,0.7227772227772228,0.7232767232767233,0.7237762237762237,0.7242757242757243,0.7247752247752248,0.7252747252747253,0.7257742257742258,0.7262737262737263,0.7267732267732268,0.7272727272727273,0.7277722277722277,0.7282717282717283,0.7287712287712288,0.7292707292707292,0.7297702297702298,0.7302697302697303,0.7307692307692307,0.7312687312687313,0.7317682317682318,0.7322677322677322,0.7327672327672328,0.7332667332667333,0.7337662337662337,0.7342657342657343,0.7347652347652348,0.7352647352647352,0.7357642357642358,0.7362637362637363,0.7367632367632367,0.7372627372627373,0.7377622377622378,0.7382617382617382,0.7387612387612388,0.7392607392607392,0.7397602397602397,0.7402597402597403,0.7407592407592407,0.7412587412587412,0.7417582417582418,0.7422577422577422,0.7427572427572428,0.7432567432567433,0.7437562437562437,0.7442557442557443,0.7447552447552448,0.7452547452547452,0.7457542457542458,0.7462537462537463,0.7467532467532467,0.7472527472527473,0.7477522477522478,0.7482517482517482,0.7487512487512488,0.7492507492507493,0.7497502497502497,0.7502497502497503,0.7507492507492507,0.7512487512487512,0.7517482517482518,0.7522477522477522,0.7527472527472527,0.7532467532467533,0.7537462537462537,0.7542457542457542,0.7547452547452548,0.7552447552447552,0.7557442557442557,0.7562437562437563,0.7567432567432567,0.7572427572427572,0.7577422577422578,0.7582417582417582,0.7587412587412588,0.7592407592407593,0.7597402597402597,0.7602397602397603,0.7607392607392608,0.7612387612387612,0.7617382617382618,0.7622377622377622,0.7627372627372627,0.7632367632367633,0.7637362637362637,0.7642357642357642,0.7647352647352648,0.7652347652347652,0.7657342657342657,0.7662337662337663,0.7667332667332667,0.7672327672327672,0.7677322677322678,0.7682317682317682,0.7687312687312687,0.7692307692307693,0.7697302697302697,0.7702297702297702,0.7707292707292708,0.7712287712287712,0.7717282717282717,0.7722277722277723,0.7727272727272727,0.7732267732267732,0.7737262737262737,0.7742257742257742,0.7747252747252747,0.7752247752247752,0.7757242757242757,0.7762237762237763,0.7767232767232767,0.7772227772227772,0.7777222777222778,0.7782217782217782,0.7787212787212787,0.7792207792207793,0.7797202797202797,0.7802197802197802,0.7807192807192808,0.7812187812187812,0.7817182817182817,0.7822177822177823,0.7827172827172827,0.7832167832167832,0.7837162837162838,0.7842157842157842,0.7847152847152847,0.7852147852147852,0.7857142857142857,0.7862137862137862,0.7867132867132867,0.7872127872127872,0.7877122877122877,0.7882117882117882,0.7887112887112887,0.7892107892107892,0.7897102897102897,0.7902097902097902,0.7907092907092907,0.7912087912087912,0.7917082917082917,0.7922077922077922,0.7927072927072927,0.7932067932067932,0.7937062937062938,0.7942057942057942,0.7947052947052947,0.7952047952047953,0.7957042957042957,0.7962037962037962,0.7967032967032966,0.7972027972027972,0.7977022977022977,0.7982017982017982,0.7987012987012987,0.7992007992007992,0.7997002997002997,0.8001998001998002,0.8006993006993007,0.8011988011988012,0.8016983016983017,0.8021978021978022,0.8026973026973027,0.8031968031968032,0.8036963036963037,0.8041958041958042,0.8046953046953047,0.8051948051948052,0.8056943056943057,0.8061938061938062,0.8066933066933067,0.8071928071928072,0.8076923076923077,0.8081918081918081,0.8086913086913087,0.8091908091908092,0.8096903096903096,0.8101898101898102,0.8106893106893107,0.8111888111888111,0.8116883116883117,0.8121878121878122,0.8126873126873126,0.8131868131868132,0.8136863136863137,0.8141858141858141,0.8146853146853147,0.8151848151848152,0.8156843156843157,0.8161838161838162,0.8166833166833167,0.8171828171828172,0.8176823176823177,0.8181818181818182,0.8186813186813187,0.8191808191808192,0.8196803196803197,0.8201798201798202,0.8206793206793207,0.8211788211788211,0.8216783216783217,0.8221778221778222,0.8226773226773226,0.8231768231768232,0.8236763236763237,0.8241758241758241,0.8246753246753247,0.8251748251748252,0.8256743256743256,0.8261738261738262,0.8266733266733267,0.8271728271728271,0.8276723276723277,0.8281718281718282,0.8286713286713286,0.8291708291708292,0.8296703296703297,0.8301698301698301,0.8306693306693307,0.8311688311688312,0.8316683316683317,0.8321678321678322,0.8326673326673326,0.8331668331668332,0.8336663336663337,0.8341658341658341,0.8346653346653347,0.8351648351648352,0.8356643356643356,0.8361638361638362,0.8366633366633367,0.8371628371628371,0.8376623376623377,0.8381618381618382,0.8386613386613386,0.8391608391608392,0.8396603396603397,0.8401598401598401,0.8406593406593407,0.8411588411588412,0.8416583416583416,0.8421578421578422,0.8426573426573427,0.8431568431568431,0.8436563436563437,0.8441558441558441,0.8446553446553446,0.8451548451548452,0.8456543456543456,0.8461538461538461,0.8466533466533467,0.8471528471528471,0.8476523476523476,0.8481518481518482,0.8486513486513486,0.8491508491508492,0.8496503496503497,0.8501498501498501,0.8506493506493507,0.8511488511488512,0.8516483516483516,0.8521478521478522,0.8526473526473527,0.8531468531468531,0.8536463536463537,0.8541458541458542,0.8546453546453546,0.8551448551448552,0.8556443556443556,0.8561438561438561,0.8566433566433567,0.8571428571428571,0.8576423576423576,0.8581418581418582,0.8586413586413586,0.8591408591408591,0.8596403596403597,0.8601398601398601,0.8606393606393606,0.8611388611388612,0.8616383616383616,0.8621378621378621,0.8626373626373627,0.8631368631368631,0.8636363636363636,0.8641358641358642,0.8646353646353646,0.8651348651348651,0.8656343656343657,0.8661338661338661,0.8666333666333667,0.8671328671328671,0.8676323676323676,0.8681318681318682,0.8686313686313686,0.8691308691308691,0.8696303696303697,0.8701298701298701,0.8706293706293706,0.8711288711288712,0.8716283716283716,0.8721278721278721,0.8726273726273727,0.8731268731268731,0.8736263736263736,0.8741258741258742,0.8746253746253746,0.8751248751248751,0.8756243756243757,0.8761238761238761,0.8766233766233766,0.8771228771228772,0.8776223776223776,0.8781218781218781,0.8786213786213786,0.8791208791208791,0.8796203796203796,0.8801198801198801,0.8806193806193806,0.8811188811188811,0.8816183816183816,0.8821178821178821,0.8826173826173827,0.8831168831168831,0.8836163836163836,0.8841158841158842,0.8846153846153846,0.8851148851148851,0.8856143856143857,0.8861138861138861,0.8866133866133866,0.8871128871128872,0.8876123876123876,0.8881118881118881,0.8886113886113887,0.8891108891108891,0.8896103896103896,0.8901098901098901,0.8906093906093906,0.8911088911088911,0.8916083916083916,0.8921078921078921,0.8926073926073926,0.8931068931068931,0.8936063936063936,0.8941058941058941,0.8946053946053946,0.8951048951048951,0.8956043956043956,0.8961038961038961,0.8966033966033966,0.8971028971028971,0.8976023976023976,0.8981018981018981,0.8986013986013986,0.8991008991008991,0.8996003996003996,0.9000999000999002,0.9005994005994006,0.9010989010989011,0.9015984015984015,0.9020979020979021,0.9025974025974026,0.903096903096903,0.9035964035964036,0.9040959040959041,0.9045954045954046,0.9050949050949051,0.9055944055944056,0.906093906093906,0.9065934065934066,0.9070929070929071,0.9075924075924076,0.9080919080919081,0.9085914085914086,0.9090909090909091,0.9095904095904096,0.9100899100899101,0.9105894105894106,0.9110889110889111,0.9115884115884116,0.9120879120879121,0.9125874125874126,0.913086913086913,0.9135864135864136,0.9140859140859141,0.9145854145854145,0.9150849150849151,0.9155844155844156,0.916083916083916,0.9165834165834166,0.9170829170829171,0.9175824175824175,0.9180819180819181,0.9185814185814186,0.919080919080919,0.9195804195804196,0.9200799200799201,0.9205794205794205,0.9210789210789211,0.9215784215784216,0.922077922077922,0.9225774225774226,0.9230769230769231,0.9235764235764236,0.9240759240759241,0.9245754245754245,0.9250749250749251,0.9255744255744256,0.926073926073926,0.9265734265734266,0.9270729270729271,0.9275724275724275,0.9280719280719281,0.9285714285714286,0.929070929070929,0.9295704295704296,0.9300699300699301,0.9305694305694305,0.9310689310689311,0.9315684315684316,0.932067932067932,0.9325674325674326,0.9330669330669331,0.9335664335664335,0.9340659340659341,0.9345654345654346,0.935064935064935,0.9355644355644356,0.936063936063936,0.9365634365634365,0.9370629370629371,0.9375624375624375,0.938061938061938,0.9385614385614386,0.939060939060939,0.9395604395604396,0.9400599400599401,0.9405594405594405,0.9410589410589411,0.9415584415584416,0.942057942057942,0.9425574425574426,0.9430569430569431,0.9435564435564435,0.9440559440559441,0.9445554445554446,0.945054945054945,0.9455544455544456,0.9460539460539461,0.9465534465534465,0.9470529470529471,0.9475524475524476,0.948051948051948,0.9485514485514486,0.949050949050949,0.9495504495504495,0.9500499500499501,0.9505494505494505,0.951048951048951,0.9515484515484516,0.952047952047952,0.9525474525474525,0.9530469530469531,0.9535464535464535,0.954045954045954,0.9545454545454546,0.955044955044955,0.9555444555444556,0.9560439560439561,0.9565434565434565,0.957042957042957,0.9575424575424576,0.958041958041958,0.9585414585414586,0.9590409590409591,0.9595404595404595,0.9600399600399601,0.9605394605394605,0.961038961038961,0.9615384615384616,0.962037962037962,0.9625374625374625,0.9630369630369631,0.9635364635364635,0.964035964035964,0.9645354645354646,0.965034965034965,0.9655344655344655,0.9660339660339661,0.9665334665334665,0.967032967032967,0.9675324675324676,0.968031968031968,0.9685314685314685,0.9690309690309691,0.9695304695304695,0.97002997002997,0.9705294705294706,0.971028971028971,0.9715284715284715,0.972027972027972,0.9725274725274725,0.973026973026973,0.9735264735264735,0.974025974025974,0.9745254745254746,0.975024975024975,0.9755244755244755,0.9760239760239761,0.9765234765234765,0.977022977022977,0.9775224775224776,0.978021978021978,0.9785214785214785,0.9790209790209791,0.9795204795204795,0.98001998001998,0.9805194805194806,0.981018981018981,0.9815184815184815,0.9820179820179821,0.9825174825174825,0.983016983016983,0.9835164835164835,0.984015984015984,0.9845154845154845,0.985014985014985,0.9855144855144855,0.986013986013986,0.9865134865134865,0.987012987012987,0.9875124875124875,0.988011988011988,0.9885114885114885,0.989010989010989,0.9895104895104895,0.99000999000999,0.9905094905094906,0.991008991008991,0.9915084915084915,0.9920079920079921,0.9925074925074925,0.993006993006993,0.9935064935064936,0.994005994005994,0.9945054945054945,0.995004995004995,0.9955044955044955,0.996003996003996,0.9965034965034965,0.997002997002997,0.9975024975024975,0.998001998001998,0.9985014985014985,0.999000999000999,0.9995004995004995,1.0]} diff --git a/base/special/acosdf/test/fixtures/julia/runner.jl b/base/special/acosdf/test/fixtures/julia/runner.jl new file mode 100644 index 000000000..17324aa92 --- /dev/null +++ b/base/special/acosdf/test/fixtures/julia/runner.jl @@ -0,0 +1,70 @@ +#!/usr/bin/env julia +# +# @license Apache-2.0 +# +# Copyright (c) 2024 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import JSON + +""" + gen( domain, name ) + +Generate fixture data and write to file. + +# Arguments + +* `domain`: domain +* `name::AbstractString`: output filename + +# Examples + +``` julia +julia> x = range( -1, stop = 1, length = 2001 ); +julia> gen( x, \"data.json\" ); +``` +""" +function gen( domain, name ) + x = collect( domain ); + y = Float32.( acosd.( Float32.( x ) ) ); + + # Store data to be written to file as a collection: + data = Dict([ + ("x", x), + ("expected", y) + ]); + + # Based on the script directory, create an output filepath: + filepath = joinpath( dir, name ); + + # Write the data to the output filepath as JSON: + outfile = open( filepath, "w" ); + write( outfile, JSON.json(data) ); + write( outfile, "\n" ); + close( outfile ); +end + +# Get the filename: +file = @__FILE__; + +# Extract the directory in which this file resides: +dir = dirname( file ); + +# Generate fixture data for negative values: +x = range( -1.0, stop = 0, length = 2003 ); +gen( x, "negative.json" ); + +# Generate fixture data for positive values: +x = range( 0, stop = 1.0, length = 2003 ); +gen( x, "positive.json" ); diff --git a/base/special/acosdf/test/test.js b/base/special/acosdf/test/test.js new file mode 100644 index 000000000..8c6c36a45 --- /dev/null +++ b/base/special/acosdf/test/test.js @@ -0,0 +1,119 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isnanf = require( './../../../../base/assert/is-nanf' ); +var absf = require( './../../../../base/special/absf' ); +var randu = require( '@stdlib/random/base/randu' ); +var EPS = require( '@stdlib/constants/float32/eps' ); +var acosdf = require( './../lib' ); + + +// FIXTURES // + +var negative = require( './fixtures/julia/negative.json' ); +var positive = require( './fixtures/julia/positive.json' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof acosdf, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns `NaN` if provided `NaN`', function test( t ) { + var v = acosdf( NaN ); + t.equal( isnanf( v ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function computes the arccosine in degrees (negative values)', function test( t ) { + var expected; + var delta; + var tol; + var x; + var y; + var i; + + x = negative.x; + expected = negative.expected; + + for ( i = 0; i < x.length; i++ ) { + y = acosdf( x[i] ); + if ( y === expected[ i ] ) { + t.equal( y, expected[ i ], 'x: '+x[i]+'. E: '+expected[i] ); + } else { + delta = absf( y - expected[i] ); + tol = 2.8 * EPS * absf( expected[i] ); + t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+expected[i]+'. tol: '+tol+'. Δ: '+delta+'.' ); + } + } + t.end(); +}); + +tape( 'the function computes the arccosine in degrees (positive values)', function test( t ) { + var expected; + var delta; + var tol; + var x; + var y; + var i; + + x = positive.x; + expected = positive.expected; + + for ( i = 0; i < x.length; i++ ) { + y = acosdf( x[i] ); + if ( y === expected[ i ] ) { + t.equal( y, expected[ i ], 'x: '+x[i]+'. E: '+expected[i] ); + } else { + delta = absf( y - expected[i] ); + tol = 2.8 * EPS * absf( expected[i] ); + t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+expected[i]+'. tol: '+tol+'. Δ: '+delta+'.' ); + } + } + t.end(); +}); + +tape( 'the function returns `NaN` if provided a value less than `-1`', function test( t ) { + var v; + var i; + + for ( i = 0; i < 1e3; i++ ) { + v = -( randu() * 1.0e6 ) - ( 1.0 - EPS ); + t.equal( isnanf( acosdf( v ) ), true, 'returns expected value when provided '+v ); + } + t.end(); +}); + +tape( 'the function returns `NaN` if provided a value greater than `+1`', function test( t ) { + var v; + var i; + + for ( i = 0; i < 1e3; i++ ) { + v = ( randu() * 1.0e6 ) + 1.0 + EPS; + t.equal( isnanf( acosdf( v ) ), true, 'returns expected value when provided '+v ); + } + t.end(); +}); diff --git a/base/special/acosdf/test/test.native.js b/base/special/acosdf/test/test.native.js new file mode 100644 index 000000000..f5ca0b6ce --- /dev/null +++ b/base/special/acosdf/test/test.native.js @@ -0,0 +1,128 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var isnanf = require( './../../../../base/assert/is-nanf' ); +var absf = require( './../../../../base/special/absf' ); +var randu = require( '@stdlib/random/base/randu' ); +var EPS = require( '@stdlib/constants/float32/eps' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var acosdf = tryRequire( resolve( __dirname, './../lib/native.js' ) ); +var opts = { + 'skip': ( acosdf instanceof Error ) +}; + + +// FIXTURES // + +var negative = require( './fixtures/julia/negative.json' ); +var positive = require( './fixtures/julia/positive.json' ); + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof acosdf, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns `NaN` if provided `NaN`', opts, function test( t ) { + var v = acosdf( NaN ); + t.equal( isnanf( v ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function computes the arccosine in degrees (negative values)', opts, function test( t ) { + var expected; + var delta; + var tol; + var x; + var y; + var i; + + x = negative.x; + expected = negative.expected; + + for ( i = 0; i < x.length; i++ ) { + y = acosdf( x[i] ); + if ( y === expected[ i ] ) { + t.equal( y, expected[ i ], 'x: '+x[i]+'. E: '+expected[i] ); + } else { + delta = absf( y - expected[i] ); + tol = 2.8 * EPS * absf( expected[i] ); + t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+expected[i]+'. tol: '+tol+'. Δ: '+delta+'.' ); + } + } + t.end(); +}); + +tape( 'the function computes the arccosine in degrees (positive values)', opts, function test( t ) { + var expected; + var delta; + var tol; + var x; + var y; + var i; + + x = positive.x; + expected = positive.expected; + + for ( i = 0; i < x.length; i++ ) { + y = acosdf( x[i] ); + if ( y === expected[ i ] ) { + t.equal( y, expected[ i ], 'x: '+x[i]+'. E: '+expected[i] ); + } else { + delta = absf( y - expected[i] ); + tol = 2.8 * EPS * absf( expected[i] ); + t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+expected[i]+'. tol: '+tol+'. Δ: '+delta+'.' ); + } + } + t.end(); +}); + +tape( 'the function returns `NaN` if provided a value less than `-1`', opts, function test( t ) { + var v; + var i; + + for ( i = 0; i < 1e3; i++ ) { + v = -( randu() * 1.0e6 ) - ( 1.0 - EPS ); + t.equal( isnanf( acosdf( v ) ), true, 'returns expected value when provided '+v ); + } + t.end(); +}); + +tape( 'the function returns `NaN` if provided a value greater than `+1`', opts, function test( t ) { + var v; + var i; + + for ( i = 0; i < 1e3; i++ ) { + v = ( randu() * 1.0e6 ) + 1.0 + EPS; + t.equal( isnanf( acosdf( v ) ), true, 'returns expected value when provided '+v ); + } + t.end(); +});