diff --git a/.devcontainer/README.md b/.devcontainer/README.md new file mode 100644 index 000000000000..1c329ea899c0 --- /dev/null +++ b/.devcontainer/README.md @@ -0,0 +1,71 @@ + + +[![Open in GitHub Codespaces][github-codespaces-image]][github-codespaces-url] + +[![Open in Dev Containers][dev-container-image]][dev-container-url] + +# Development Container + +> Development container for `stdlib`. + + + +
+ +This folder includes configuration for developing the project in a local container or using [GitHub Codespaces][github-codespaces]. + +
+ + + + + +
+ +
+ + + + + +
+ +
+ + + + + + + + diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 000000000000..6765bdae0a4a --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,31 @@ +{ + "name": "stdlib - OSS Development", + "image": "mcr.microsoft.com/devcontainers/javascript-node:1-20-bullseye", + "features": { + "ghcr.io/devcontainers/features/python:1": {}, + "ghcr.io/rocker-org/devcontainer-features/r-apt:0": {}, + "ghcr.io/julialang/devcontainer-features/julia:1": {}, + "ghcr.io/marcozac/devcontainer-features/shellcheck:1": {}, + "ghcr.io/rocker-org/devcontainer-features/pandoc:1": {} + }, + "postCreateCommand": "./.devcontainer/post-create", + "customizations": { + "codespaces": { + "openFiles": [ + "README.md" + ] + }, + "vscode": { + "settings": { + "resmon.show.battery": false, + "resmon.show.cpufreq": false + }, + "extensions": [ + "dbaeumer.vscode-eslint", + "EditorConfig.EditorConfig", + "formulahendry.code-runner", + "vsls-contrib.codetour" + ] + } + } +} diff --git a/.devcontainer/post-create b/.devcontainer/post-create new file mode 100755 index 000000000000..f82b6309aa16 --- /dev/null +++ b/.devcontainer/post-create @@ -0,0 +1,22 @@ +#!/usr/bin/env bash +# +# @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. + +# Script to set up a development environment. + +make install +make init diff --git a/.mailmap b/.mailmap index 6b3543971592..a9e162021292 100644 --- a/.mailmap +++ b/.mailmap @@ -98,6 +98,9 @@ Pratik <97464067+Pratik772846@users.noreply.github.com> Pratik772846 Priyansh <88396544+itsspriyansh@users.noreply.github.com> itsspriyansh +Pushpendra Chandravanshi <56391001+Pushpendra766@users.noreply.github.com> +Pushpendra Chandravanshi Pushpendra766 + # R Raunak Kumar Gupta <95216822+raunak-dev-edu@users.noreply.github.com> @@ -137,6 +140,10 @@ Stephannie Jiménez Gacha Stephannie Jimenez Stephannie Jiménez Gacha Stephannie Jimenez Gacha +# T + +Tudor Pagu <104032457+tudor-pagu@users.noreply.github.com> tudor-pagu + # U Utkarsh <137638507+Ut-the-pro@users.noreply.github.com> diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 546751229eb6..4500383d45db 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -36,6 +36,7 @@ Joris Labie Justin Dennison Karthik Prakash <116057817+skoriop@users.noreply.github.com> Khaldon +Krishnendu Das <86651039+itskdhere@users.noreply.github.com> Lovelin <100030865+lovelindhoni@users.noreply.github.com> Manik Sharma Marcus Fantham @@ -45,6 +46,7 @@ Milan Raj Momtchil Momtchev Muhammad Haris Naresh Jagadeesan +NightKnight Nithin Katta <88046362+nithinkatta@users.noreply.github.com> Ognjen Jevremović Oneday12323 <107678750+Oneday12323@users.noreply.github.com> @@ -54,6 +56,7 @@ Pranav Goswami Praneki <97080887+PraneGIT@users.noreply.github.com> Pratik <97464067+Pratik772846@users.noreply.github.com> Priyansh <88396544+itsspriyansh@users.noreply.github.com> +Pushpendra Chandravanshi Raunak Kumar Gupta Rejoan Sardar <119718513+Rejoan-Sardar@users.noreply.github.com> Ricky Reusser @@ -72,6 +75,7 @@ Spandan Barve Stephannie Jiménez Gacha Suraj kumar <125961509+kumarsuraj212003@users.noreply.github.com> Tirtadwipa Manunggal +Tudor Pagu <104032457+tudor-pagu@users.noreply.github.com> Utkarsh Utkarsh Raj Varad Gupta diff --git a/lib/node_modules/@stdlib/blas/ext/base/dapxsum/README.md b/lib/node_modules/@stdlib/blas/ext/base/dapxsum/README.md index be6366e5a8c4..59e8e6805645 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dapxsum/README.md +++ b/lib/node_modules/@stdlib/blas/ext/base/dapxsum/README.md @@ -53,19 +53,18 @@ var v = dapxsum( N, 5.0, x, 1 ); The function has the following parameters: - **N**: number of indexed elements. +- **alpha**: scalar constant. - **x**: input [`Float64Array`][@stdlib/array/float64]. - **stride**: index increment for `x`. -The `N` and `stride` parameters determine which elements in `x` are accessed at runtime. For example, to access every other element in `x`, +The `N` and stride parameters determine which elements in the strided array are accessed at runtime. For example, to access every other element in `x`, ```javascript var Float64Array = require( '@stdlib/array/float64' ); -var floor = require( '@stdlib/math/base/special/floor' ); var x = new Float64Array( [ 1.0, 2.0, 2.0, -7.0, -2.0, 3.0, 4.0, 2.0 ] ); -var N = floor( x.length / 2 ); -var v = dapxsum( N, 5.0, x, 2 ); +var v = dapxsum( 4, 5.0, x, 2 ); // returns 25.0 ``` @@ -75,14 +74,11 @@ Note that indexing is relative to the first index. To introduce an offset, use [ ```javascript var Float64Array = require( '@stdlib/array/float64' ); -var floor = require( '@stdlib/math/base/special/floor' ); var x0 = new Float64Array( [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0 ] ); var x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element -var N = floor( x0.length / 2 ); - -var v = dapxsum( N, 5.0, x1, 2 ); +var v = dapxsum( 4, 5.0, x1, 2 ); // returns 25.0 ``` @@ -104,16 +100,14 @@ The function has the following additional parameters: - **offset**: starting index for `x`. -While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying `buffer`, the `offset` parameter supports indexing semantics based on a starting index. For example, to access every other value in `x` starting from the second value +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying `buffer`, the offset parameter supports indexing semantics based on a starting index. For example, to access every other value in `x` starting from the second value ```javascript var Float64Array = require( '@stdlib/array/float64' ); -var floor = require( '@stdlib/math/base/special/floor' ); var x = new Float64Array( [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0 ] ); -var N = floor( x.length / 2 ); -var v = dapxsum.ndarray( N, 5.0, x, 2, 1 ); +var v = dapxsum.ndarray( 4, 5.0, x, 2, 1 ); // returns 25.0 ``` @@ -138,18 +132,11 @@ var v = dapxsum.ndarray( N, 5.0, x, 2, 1 ); ```javascript -var randu = require( '@stdlib/random/base/randu' ); -var round = require( '@stdlib/math/base/special/round' ); -var Float64Array = require( '@stdlib/array/float64' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var dapxsum = require( '@stdlib/blas/ext/base/dapxsum' ); -var x; -var i; - -x = new Float64Array( 10 ); -for ( i = 0; i < x.length; i++ ) { - x[ i ] = round( randu()*100.0 ); -} +var x = filledarrayBy( 10, 'float64', discreteUniform( 0, 100 ) ); console.log( x ); var v = dapxsum( x.length, 5.0, x, 1 ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dapxsum/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/dapxsum/benchmark/benchmark.js index f07b0af932e8..4ff710173b49 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dapxsum/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dapxsum/benchmark/benchmark.js @@ -21,14 +21,19 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/base/uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); -var Float64Array = require( '@stdlib/array/float64' ); var pkg = require( './../package.json' ).name; var dapxsum = require( './../lib/dapxsum.js' ); +// VARIABLES // + +var rand = uniform( -100.0, 100.0 ); + + // FUNCTIONS // /** @@ -39,13 +44,7 @@ var dapxsum = require( './../lib/dapxsum.js' ); * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x; - var i; - - x = new Float64Array( len ); - for ( i = 0; i < x.length; i++ ) { - x[ i ] = ( randu()*20.0 ) - 10.0; - } + var x = filledarrayBy( len, 'float64', rand ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/blas/ext/base/dapxsum/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/blas/ext/base/dapxsum/benchmark/benchmark.native.js index 9db94ed9e77b..24d742e9bcf9 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dapxsum/benchmark/benchmark.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dapxsum/benchmark/benchmark.native.js @@ -22,10 +22,10 @@ var resolve = require( 'path' ).resolve; var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/base/uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); -var Float64Array = require( '@stdlib/array/float64' ); var tryRequire = require( '@stdlib/utils/try-require' ); var pkg = require( './../package.json' ).name; @@ -36,6 +36,7 @@ var dapxsum = tryRequire( resolve( __dirname, './../lib/dapxsum.native.js' ) ); var opts = { 'skip': ( dapxsum instanceof Error ) }; +var rand = uniform( -100.0, 100.0 ); // FUNCTIONS // @@ -48,13 +49,7 @@ var opts = { * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x; - var i; - - x = new Float64Array( len ); - for ( i = 0; i < x.length; i++ ) { - x[ i ] = ( randu()*20.0 ) - 10.0; - } + var x = filledarrayBy( len, 'float64', rand ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/blas/ext/base/dapxsum/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/dapxsum/benchmark/benchmark.ndarray.js index 85d8773fa607..cc83b2dc3a22 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dapxsum/benchmark/benchmark.ndarray.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dapxsum/benchmark/benchmark.ndarray.js @@ -21,14 +21,19 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/base/uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); -var Float64Array = require( '@stdlib/array/float64' ); var pkg = require( './../package.json' ).name; var dapxsum = require( './../lib/ndarray.js' ); +// VARIABLES // + +var rand = uniform( -100.0, 100.0 ); + + // FUNCTIONS // /** @@ -39,13 +44,7 @@ var dapxsum = require( './../lib/ndarray.js' ); * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x; - var i; - - x = new Float64Array( len ); - for ( i = 0; i < x.length; i++ ) { - x[ i ] = ( randu()*20.0 ) - 10.0; - } + var x = filledarrayBy( len, 'float64', rand ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/blas/ext/base/dapxsum/benchmark/benchmark.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/dapxsum/benchmark/benchmark.ndarray.native.js index c6059a456140..a8f1618b4dd6 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dapxsum/benchmark/benchmark.ndarray.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dapxsum/benchmark/benchmark.ndarray.native.js @@ -22,10 +22,10 @@ var resolve = require( 'path' ).resolve; var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/base/uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); -var Float64Array = require( '@stdlib/array/float64' ); var tryRequire = require( '@stdlib/utils/try-require' ); var pkg = require( './../package.json' ).name; @@ -36,6 +36,7 @@ var dapxsum = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); var opts = { 'skip': ( dapxsum instanceof Error ) }; +var rand = uniform( -100.0, 100.0 ); // FUNCTIONS // @@ -48,13 +49,7 @@ var opts = { * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x; - var i; - - x = new Float64Array( len ); - for ( i = 0; i < x.length; i++ ) { - x[ i ] = ( randu()*20.0 ) - 10.0; - } + var x = filledarrayBy( len, 'float64', rand ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/blas/ext/base/dapxsum/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/dapxsum/docs/repl.txt index 42592f2e60a6..b4380e2e5a6c 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dapxsum/docs/repl.txt +++ b/lib/node_modules/@stdlib/blas/ext/base/dapxsum/docs/repl.txt @@ -3,8 +3,8 @@ Adds a constant to each double-precision floating-point strided array element and computes the sum. - The `N` and `stride` parameters determine which elements in `x` are accessed - at runtime. + The `N` and stride parameters determine which elements in the strided + array are accessed at runtime. Indexing is relative to the first index. To introduce an offset, use a typed array view. @@ -37,27 +37,24 @@ > {{alias}}( x.length, 5.0, x, 1 ) 16.0 - // Using `N` and `stride` parameters: + // Using `N` and stride parameters: > x = new {{alias:@stdlib/array/float64}}( [ -2.0, 1.0, 1.0, -5.0, 2.0, -1.0 ] ); - > var N = {{alias:@stdlib/math/base/special/floor}}( x.length / 2 ); - > var stride = 2; - > {{alias}}( N, 5.0, x, stride ) + > {{alias}}( 3, 5.0, x, 2 ) 16.0 // Using view offsets: > var x0 = new {{alias:@stdlib/array/float64}}( [ 1.0, -2.0, 3.0, 2.0, 5.0, -1.0 ] ); > var x1 = new {{alias:@stdlib/array/float64}}( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); - > N = {{alias:@stdlib/math/base/special/floor}}( x0.length / 2 ); - > stride = 2; - > {{alias}}( N, 5.0, x1, stride ) + > {{alias}}( 3, 5.0, x1, 2 ) 14.0 + {{alias}}.ndarray( N, alpha, x, stride, offset ) Adds a constant to each double-precision floating-point strided array element and computes the sum using alternative indexing semantics. While typed array views mandate a view offset based on the underlying - buffer, the `offset` parameter supports indexing semantics based on a + buffer, the offset parameter supports indexing semantics based on a starting index. Parameters @@ -90,9 +87,8 @@ 16.0 // Using offset parameter: - > var x = new {{alias:@stdlib/array/float64}}( [ 1.0, -2.0, 3.0, 2.0, 5.0, -1.0 ] ); - > var N = {{alias:@stdlib/math/base/special/floor}}( x.length / 2 ); - > {{alias}}.ndarray( N, 5.0, x, 2, 1 ) + > x = new {{alias:@stdlib/array/float64}}( [ 1.0, -2.0, 3.0, 2.0, 5.0, -1.0 ] ); + > {{alias}}.ndarray( 3, 5.0, x, 2, 1 ) 14.0 See Also diff --git a/lib/node_modules/@stdlib/blas/ext/base/dapxsum/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/dapxsum/examples/index.js index cae9f87c6243..139c53c4876a 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dapxsum/examples/index.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dapxsum/examples/index.js @@ -18,18 +18,11 @@ 'use strict'; -var randu = require( '@stdlib/random/base/randu' ); -var round = require( '@stdlib/math/base/special/round' ); -var Float64Array = require( '@stdlib/array/float64' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var dapxsum = require( './../lib' ); -var x; -var i; - -x = new Float64Array( 10 ); -for ( i = 0; i < x.length; i++ ) { - x[ i ] = round( randu()*100.0 ); -} +var x = filledarrayBy( 10, 'float64', discreteUniform( 0, 100 ) ); console.log( x ); var v = dapxsum( x.length, 5.0, x, 1 ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dapxsum/include.gypi b/lib/node_modules/@stdlib/blas/ext/base/dapxsum/include.gypi index 868c5c12e852..26476a8c2655 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dapxsum/include.gypi +++ b/lib/node_modules/@stdlib/blas/ext/base/dapxsum/include.gypi @@ -36,7 +36,7 @@ # Source files: 'src_files': [ - '<(src_dir)/addon.cpp', + '<(src_dir)/addon.c', ' +#include + +/** +* Receives JavaScript callback invocation data. +* +* @private +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 4 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_DOUBLE( env, alpha, argv, 1 ); + STDLIB_NAPI_ARGV_INT64( env, stride, argv, 3 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT64ARRAY( env, X, N, stride, argv, 2 ); + + napi_value v; + napi_status status = napi_create_double( env, stdlib_strided_dapxsum( N, alpha, X, stride ), &v ); + assert( status == napi_ok ); + + return v; +} + +STDLIB_NAPI_MODULE_EXPORT_FCN( addon ) diff --git a/lib/node_modules/@stdlib/blas/ext/base/dapxsum/src/addon.cpp b/lib/node_modules/@stdlib/blas/ext/base/dapxsum/src/addon.cpp deleted file mode 100644 index d03e71ac4f58..000000000000 --- a/lib/node_modules/@stdlib/blas/ext/base/dapxsum/src/addon.cpp +++ /dev/null @@ -1,130 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2020 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/blas/ext/base/dapxsum.h" -#include -#include -#include -#include -#include - -/** -* Add-on namespace. -*/ -namespace stdlib_blas_ext_base_dapxsum { - - /** - * Adds a constant to each double-precision floating-point strided array element and computes the sum. - * - * ## Notes - * - * - When called from JavaScript, the function expects four arguments: - * - * - `N`: number of indexed elements - * - `alpha`: constant - * - `X`: input array - * - `stride`: stride length - */ - napi_value node_dapxsum( napi_env env, napi_callback_info info ) { - napi_status status; - - size_t argc = 4; - napi_value argv[ 4 ]; - status = napi_get_cb_info( env, info, &argc, argv, nullptr, nullptr ); - assert( status == napi_ok ); - - if ( argc < 4 ) { - napi_throw_error( env, nullptr, "invalid invocation. Must provide 4 arguments." ); - return nullptr; - } - - napi_valuetype vtype0; - status = napi_typeof( env, argv[ 0 ], &vtype0 ); - assert( status == napi_ok ); - if ( vtype0 != napi_number ) { - napi_throw_type_error( env, nullptr, "invalid argument. First argument must be a number." ); - return nullptr; - } - - napi_valuetype vtype1; - status = napi_typeof( env, argv[ 1 ], &vtype1 ); - assert( status == napi_ok ); - if ( vtype1 != napi_number ) { - napi_throw_type_error( env, nullptr, "invalid argument. Second argument must be a number." ); - return nullptr; - } - - bool res; - status = napi_is_typedarray( env, argv[ 2 ], &res ); - assert( status == napi_ok ); - if ( res == false ) { - napi_throw_type_error( env, nullptr, "invalid argument. Third argument must be a Float64Array." ); - return nullptr; - } - - napi_valuetype vtype3; - status = napi_typeof( env, argv[ 3 ], &vtype3 ); - assert( status == napi_ok ); - if ( vtype3 != napi_number ) { - napi_throw_type_error( env, nullptr, "invalid argument. Fourth argument must be a number." ); - return nullptr; - } - - int64_t N; - status = napi_get_value_int64( env, argv[ 0 ], &N ); - assert( status == napi_ok ); - - double alpha; - status = napi_get_value_double( env, argv[ 1 ], &alpha ); - assert( status == napi_ok ); - - int64_t stride; - status = napi_get_value_int64( env, argv[ 3 ], &stride ); - assert( status == napi_ok ); - - napi_typedarray_type vtype2; - size_t xlen; - void *X; - status = napi_get_typedarray_info( env, argv[ 2 ], &vtype2, &xlen, &X, nullptr, nullptr ); - assert( status == napi_ok ); - if ( vtype2 != napi_float64_array ) { - napi_throw_type_error( env, nullptr, "invalid argument. Third argument must be a Float64Array." ); - return nullptr; - } - if ( (N-1)*llabs(stride) >= (int64_t)xlen ) { - napi_throw_range_error( env, nullptr, "invalid argument. Third argument has insufficient elements based on the associated stride and the number of indexed elements." ); - return nullptr; - } - - napi_value v; - status = napi_create_double( env, stdlib_strided_dapxsum( N, alpha, (double *)X, stride ), &v ); - assert( status == napi_ok ); - - return v; - } - - napi_value Init( napi_env env, napi_value exports ) { - napi_status status; - napi_value fcn; - status = napi_create_function( env, "exports", NAPI_AUTO_LENGTH, node_dapxsum, NULL, &fcn ); - assert( status == napi_ok ); - return fcn; - } - - NAPI_MODULE( NODE_GYP_MODULE_NAME, Init ) -} // end namespace stdlib_blas_ext_base_dapxsum diff --git a/lib/node_modules/@stdlib/blas/ext/base/dapxsum/test/test.dapxsum.js b/lib/node_modules/@stdlib/blas/ext/base/dapxsum/test/test.dapxsum.js index 34aef5bb3159..e1e504910961 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dapxsum/test/test.dapxsum.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dapxsum/test/test.dapxsum.js @@ -21,7 +21,6 @@ // MODULES // var tape = require( 'tape' ); -var floor = require( '@stdlib/math/base/special/floor' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var Float64Array = require( '@stdlib/array/float64' ); var dapxsum = require( './../lib/dapxsum.js' ); @@ -36,7 +35,7 @@ tape( 'main export is a function', function test( t ) { }); tape( 'the function has an arity of 4', function test( t ) { - t.strictEqual( dapxsum.length, 4, 'has expected arity' ); + t.strictEqual( dapxsum.length, 4, 'returns expected value' ); t.end(); }); @@ -95,7 +94,6 @@ tape( 'if provided an `N` parameter equal to `1`, the function returns the first }); tape( 'the function supports a `stride` parameter', function test( t ) { - var N; var x; var v; @@ -110,15 +108,13 @@ tape( 'the function supports a `stride` parameter', function test( t ) { 2.0 ]); - N = floor( x.length / 2 ); - v = dapxsum( N, 5.0, x, 2 ); + v = dapxsum( 4, 5.0, x, 2 ); t.strictEqual( v, 25.0, 'returns expected value' ); t.end(); }); tape( 'the function supports a negative `stride` parameter', function test( t ) { - var N; var x; var v; @@ -133,8 +129,7 @@ tape( 'the function supports a negative `stride` parameter', function test( t ) 2.0 ]); - N = floor( x.length / 2 ); - v = dapxsum( N, 5.0, x, -2 ); + v = dapxsum( 4, 5.0, x, -2 ); t.strictEqual( v, 25.0, 'returns expected value' ); t.end(); @@ -155,7 +150,6 @@ tape( 'if provided a `stride` parameter equal to `0`, the function returns the f tape( 'the function supports view offsets', function test( t ) { var x0; var x1; - var N; var v; x0 = new Float64Array([ @@ -171,9 +165,8 @@ tape( 'the function supports view offsets', function test( t ) { ]); x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element - N = floor(x1.length / 2); - v = dapxsum( N, 5.0, x1, 2 ); + v = dapxsum( 4, 5.0, x1, 2 ); t.strictEqual( v, 25.0, 'returns expected value' ); t.end(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dapxsum/test/test.dapxsum.native.js b/lib/node_modules/@stdlib/blas/ext/base/dapxsum/test/test.dapxsum.native.js index ebcdf8f52ea1..517bea646e02 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dapxsum/test/test.dapxsum.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dapxsum/test/test.dapxsum.native.js @@ -22,7 +22,6 @@ var resolve = require( 'path' ).resolve; var tape = require( 'tape' ); -var floor = require( '@stdlib/math/base/special/floor' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var Float64Array = require( '@stdlib/array/float64' ); var tryRequire = require( '@stdlib/utils/try-require' ); @@ -45,7 +44,7 @@ tape( 'main export is a function', opts, function test( t ) { }); tape( 'the function has an arity of 4', opts, function test( t ) { - t.strictEqual( dapxsum.length, 4, 'has expected arity' ); + t.strictEqual( dapxsum.length, 4, 'returns expected value' ); t.end(); }); @@ -213,7 +212,6 @@ tape( 'if provided an `N` parameter equal to `1`, the function returns the first }); tape( 'the function supports a `stride` parameter', opts, function test( t ) { - var N; var x; var v; @@ -228,15 +226,13 @@ tape( 'the function supports a `stride` parameter', opts, function test( t ) { 2.0 ]); - N = floor( x.length / 2 ); - v = dapxsum( N, 5.0, x, 2 ); + v = dapxsum( 4, 5.0, x, 2 ); t.strictEqual( v, 25.0, 'returns expected value' ); t.end(); }); tape( 'the function supports a negative `stride` parameter', opts, function test( t ) { - var N; var x; var v; @@ -251,8 +247,7 @@ tape( 'the function supports a negative `stride` parameter', opts, function test 2.0 ]); - N = floor( x.length / 2 ); - v = dapxsum( N, 5.0, x, -2 ); + v = dapxsum( 4, 5.0, x, -2 ); t.strictEqual( v, 25.0, 'returns expected value' ); t.end(); @@ -273,7 +268,6 @@ tape( 'if provided a `stride` parameter equal to `0`, the function returns the f tape( 'the function supports view offsets', opts, function test( t ) { var x0; var x1; - var N; var v; x0 = new Float64Array([ @@ -289,9 +283,8 @@ tape( 'the function supports view offsets', opts, function test( t ) { ]); x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element - N = floor(x1.length / 2); - v = dapxsum( N, 5.0, x1, 2 ); + v = dapxsum( 4, 5.0, x1, 2 ); t.strictEqual( v, 25.0, 'returns expected value' ); t.end(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dapxsum/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/dapxsum/test/test.ndarray.js index e8cfe2f682df..541719cb7fb6 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dapxsum/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dapxsum/test/test.ndarray.js @@ -21,7 +21,6 @@ // MODULES // var tape = require( 'tape' ); -var floor = require( '@stdlib/math/base/special/floor' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var Float64Array = require( '@stdlib/array/float64' ); var dapxsum = require( './../lib/ndarray.js' ); @@ -36,7 +35,7 @@ tape( 'main export is a function', function test( t ) { }); tape( 'the function has an arity of 5', function test( t ) { - t.strictEqual( dapxsum.length, 5, 'has expected arity' ); + t.strictEqual( dapxsum.length, 5, 'returns expected value' ); t.end(); }); @@ -95,7 +94,6 @@ tape( 'if provided an `N` parameter equal to `1`, the function returns the first }); tape( 'the function supports a `stride` parameter', function test( t ) { - var N; var x; var v; @@ -110,15 +108,13 @@ tape( 'the function supports a `stride` parameter', function test( t ) { 2.0 ]); - N = floor( x.length / 2 ); - v = dapxsum( N, 5.0, x, 2, 0 ); + v = dapxsum( 4, 5.0, x, 2, 0 ); t.strictEqual( v, 25.0, 'returns expected value' ); t.end(); }); tape( 'the function supports a negative `stride` parameter', function test( t ) { - var N; var x; var v; @@ -133,8 +129,7 @@ tape( 'the function supports a negative `stride` parameter', function test( t ) 2.0 ]); - N = floor( x.length / 2 ); - v = dapxsum( N, 5.0, x, -2, 6 ); + v = dapxsum( 4, 5.0, x, -2, 6 ); t.strictEqual( v, 25.0, 'returns expected value' ); t.end(); @@ -153,7 +148,6 @@ tape( 'if provided a `stride` parameter equal to `0`, the function returns the f }); tape( 'the function supports an `offset` parameter', function test( t ) { - var N; var x; var v; @@ -167,9 +161,8 @@ tape( 'the function supports an `offset` parameter', function test( t ) { 3.0, 4.0 // 3 ]); - N = floor( x.length / 2 ); - v = dapxsum( N, 5.0, x, 2, 1 ); + v = dapxsum( 4, 5.0, x, 2, 1 ); t.strictEqual( v, 25.0, 'returns expected value' ); t.end(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dapxsum/test/test.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/dapxsum/test/test.ndarray.native.js index 6bc30225fcd6..e0d251264d0d 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dapxsum/test/test.ndarray.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dapxsum/test/test.ndarray.native.js @@ -22,7 +22,6 @@ var resolve = require( 'path' ).resolve; var tape = require( 'tape' ); -var floor = require( '@stdlib/math/base/special/floor' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var Float64Array = require( '@stdlib/array/float64' ); var tryRequire = require( '@stdlib/utils/try-require' ); @@ -104,7 +103,6 @@ tape( 'if provided an `N` parameter equal to `1`, the function returns the first }); tape( 'the function supports a `stride` parameter', opts, function test( t ) { - var N; var x; var v; @@ -119,15 +117,13 @@ tape( 'the function supports a `stride` parameter', opts, function test( t ) { 2.0 ]); - N = floor( x.length / 2 ); - v = dapxsum( N, 5.0, x, 2, 0 ); + v = dapxsum( 4, 5.0, x, 2, 0 ); t.strictEqual( v, 25.0, 'returns expected value' ); t.end(); }); tape( 'the function supports a negative `stride` parameter', opts, function test( t ) { - var N; var x; var v; @@ -142,8 +138,7 @@ tape( 'the function supports a negative `stride` parameter', opts, function test 2.0 ]); - N = floor( x.length / 2 ); - v = dapxsum( N, 5.0, x, -2, 6 ); + v = dapxsum( 4, 5.0, x, -2, 6 ); t.strictEqual( v, 25.0, 'returns expected value' ); t.end(); @@ -162,7 +157,6 @@ tape( 'if provided a `stride` parameter equal to `0`, the function returns the f }); tape( 'the function supports an `offset` parameter', opts, function test( t ) { - var N; var x; var v; @@ -176,9 +170,8 @@ tape( 'the function supports an `offset` parameter', opts, function test( t ) { 3.0, 4.0 // 3 ]); - N = floor( x.length / 2 ); - v = dapxsum( N, 5.0, x, 2, 1 ); + v = dapxsum( 4, 5.0, x, 2, 1 ); t.strictEqual( v, 25.0, 'returns expected value' ); t.end(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/README.md b/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/README.md index 033edccc5ac5..83c8bbb5f931 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/README.md +++ b/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/README.md @@ -44,9 +44,8 @@ Adds a constant to each double-precision floating-point strided array element an var Float64Array = require( '@stdlib/array/float64' ); var x = new Float64Array( [ 1.0, -2.0, 2.0 ] ); -var N = x.length; -var v = dapxsumkbn2( N, 5.0, x, 1 ); +var v = dapxsumkbn2( 3, 5.0, x, 1 ); // returns 16.0 ``` @@ -56,16 +55,14 @@ The function has the following parameters: - **x**: input [`Float64Array`][@stdlib/array/float64]. - **stride**: index increment for `x`. -The `N` and `stride` parameters determine which elements in `x` are accessed at runtime. For example, to access every other element in `x`, +The `N` and stride parameters determine which elements in the strided array are accessed at runtime. For example, to access every other element in `x`, ```javascript var Float64Array = require( '@stdlib/array/float64' ); -var floor = require( '@stdlib/math/base/special/floor' ); var x = new Float64Array( [ 1.0, 2.0, 2.0, -7.0, -2.0, 3.0, 4.0, 2.0 ] ); -var N = floor( x.length / 2 ); -var v = dapxsumkbn2( N, 5.0, x, 2 ); +var v = dapxsumkbn2( 4, 5.0, x, 2 ); // returns 25.0 ``` @@ -75,14 +72,11 @@ Note that indexing is relative to the first index. To introduce an offset, use [ ```javascript var Float64Array = require( '@stdlib/array/float64' ); -var floor = require( '@stdlib/math/base/special/floor' ); var x0 = new Float64Array( [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0 ] ); var x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element -var N = floor( x0.length / 2 ); - -var v = dapxsumkbn2( N, 5.0, x1, 2 ); +var v = dapxsumkbn2( 4, 5.0, x1, 2 ); // returns 25.0 ``` @@ -94,9 +88,8 @@ Adds a constant to each double-precision floating-point strided array element an var Float64Array = require( '@stdlib/array/float64' ); var x = new Float64Array( [ 1.0, -2.0, 2.0 ] ); -var N = x.length; -var v = dapxsumkbn2.ndarray( N, 5.0, x, 1, 0 ); +var v = dapxsumkbn2.ndarray( 3, 5.0, x, 1, 0 ); // returns 16.0 ``` @@ -108,12 +101,10 @@ While [`typed array`][mdn-typed-array] views mandate a view offset based on the ```javascript var Float64Array = require( '@stdlib/array/float64' ); -var floor = require( '@stdlib/math/base/special/floor' ); var x = new Float64Array( [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0 ] ); -var N = floor( x.length / 2 ); -var v = dapxsumkbn2.ndarray( N, 5.0, x, 2, 1 ); +var v = dapxsumkbn2.ndarray( 4, 5.0, x, 2, 1 ); // returns 25.0 ``` @@ -138,18 +129,11 @@ var v = dapxsumkbn2.ndarray( N, 5.0, x, 2, 1 ); ```javascript -var randu = require( '@stdlib/random/base/randu' ); -var round = require( '@stdlib/math/base/special/round' ); -var Float64Array = require( '@stdlib/array/float64' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var dapxsumkbn2 = require( '@stdlib/blas/ext/base/dapxsumkbn2' ); -var x; -var i; - -x = new Float64Array( 10 ); -for ( i = 0; i < x.length; i++ ) { - x[ i ] = round( randu()*100.0 ); -} +var x = filledarrayBy( 10, 'float64', discreteUniform( 0, 100 ) ); console.log( x ); var v = dapxsumkbn2( x.length, 5.0, x, 1 ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/benchmark/benchmark.js index 50706f345ba2..1e691c643a1f 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/benchmark/benchmark.js @@ -21,14 +21,19 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/base/uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); -var Float64Array = require( '@stdlib/array/float64' ); var pkg = require( './../package.json' ).name; var dapxsumkbn2 = require( './../lib/dapxsumkbn2.js' ); +// VARIABLES // + +var rand = uniform( -10.0, 10.0 ); + + // FUNCTIONS // /** @@ -39,13 +44,7 @@ var dapxsumkbn2 = require( './../lib/dapxsumkbn2.js' ); * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x; - var i; - - x = new Float64Array( len ); - for ( i = 0; i < x.length; i++ ) { - x[ i ] = ( randu()*20.0 ) - 10.0; - } + var x = filledarrayBy( len, 'float64', rand ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/benchmark/benchmark.native.js index afa84cc32820..bb2878baa55d 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/benchmark/benchmark.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/benchmark/benchmark.native.js @@ -22,10 +22,10 @@ var resolve = require( 'path' ).resolve; var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/base/uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); -var Float64Array = require( '@stdlib/array/float64' ); var tryRequire = require( '@stdlib/utils/try-require' ); var pkg = require( './../package.json' ).name; @@ -36,6 +36,7 @@ var dapxsumkbn2 = tryRequire( resolve( __dirname, './../lib/dapxsumkbn2.native.j var opts = { 'skip': ( dapxsumkbn2 instanceof Error ) }; +var rand = uniform( -10.0, 10.0 ); // FUNCTIONS // @@ -48,13 +49,7 @@ var opts = { * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x; - var i; - - x = new Float64Array( len ); - for ( i = 0; i < x.length; i++ ) { - x[ i ] = ( randu()*20.0 ) - 10.0; - } + var x = filledarrayBy( len, 'float64', rand ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/benchmark/benchmark.ndarray.js index 3e1da0dde4b3..2d7f24c90101 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/benchmark/benchmark.ndarray.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/benchmark/benchmark.ndarray.js @@ -21,14 +21,19 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/base/uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); -var Float64Array = require( '@stdlib/array/float64' ); var pkg = require( './../package.json' ).name; var dapxsumkbn2 = require( './../lib/ndarray.js' ); +// VARIABLES // + +var rand = uniform( -10.0, 10.0 ); + + // FUNCTIONS // /** @@ -39,13 +44,7 @@ var dapxsumkbn2 = require( './../lib/ndarray.js' ); * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x; - var i; - - x = new Float64Array( len ); - for ( i = 0; i < x.length; i++ ) { - x[ i ] = ( randu()*20.0 ) - 10.0; - } + var x = filledarrayBy( len, 'float64', rand ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/benchmark/benchmark.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/benchmark/benchmark.ndarray.native.js index d0fe8a65a1cd..2c9993a3e386 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/benchmark/benchmark.ndarray.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/benchmark/benchmark.ndarray.native.js @@ -22,10 +22,10 @@ var resolve = require( 'path' ).resolve; var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/base/uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); -var Float64Array = require( '@stdlib/array/float64' ); var tryRequire = require( '@stdlib/utils/try-require' ); var pkg = require( './../package.json' ).name; @@ -36,6 +36,7 @@ var dapxsumkbn2 = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) var opts = { 'skip': ( dapxsumkbn2 instanceof Error ) }; +var rand = uniform( -10.0, 10.0 ); // FUNCTIONS // @@ -48,13 +49,7 @@ var opts = { * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x; - var i; - - x = new Float64Array( len ); - for ( i = 0; i < x.length; i++ ) { - x[ i ] = ( randu()*20.0 ) - 10.0; - } + var x = filledarrayBy( len, 'float64', rand ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/docs/repl.txt index efd2dea3bdcc..dad790e96f5e 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/docs/repl.txt +++ b/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/docs/repl.txt @@ -4,8 +4,8 @@ element and computes the sum using a second-order iterative Kahan–Babuška algorithm. - The `N` and `stride` parameters determine which elements in `x` are accessed - at runtime. + The `N` and `stride` parameters determine which elements in the strided + array are accessed at runtime. Indexing is relative to the first index. To introduce an offset, use a typed array view. @@ -40,19 +40,16 @@ // Using `N` and `stride` parameters: > x = new {{alias:@stdlib/array/float64}}( [ -2.0, 1.0, 1.0, -5.0, 2.0, -1.0 ] ); - > var N = {{alias:@stdlib/math/base/special/floor}}( x.length / 2 ); - > var stride = 2; - > {{alias}}( N, 5.0, x, stride ) + > {{alias}}( 3, 5.0, x, 2 ) 16.0 // Using view offsets: > var x0 = new {{alias:@stdlib/array/float64}}( [ 1.0, -2.0, 3.0, 2.0, 5.0, -1.0 ] ); > var x1 = new {{alias:@stdlib/array/float64}}( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); - > N = {{alias:@stdlib/math/base/special/floor}}( x0.length / 2 ); - > stride = 2; - > {{alias}}( N, 5.0, x1, stride ) + > {{alias}}( 3, 5.0, x1, 2 ) 14.0 + {{alias}}.ndarray( N, alpha, x, stride, offset ) Adds a constant to each double-precision floating-point strided array element and computes the sum using a second-order iterative Kahan–Babuška @@ -93,8 +90,7 @@ // Using offset parameter: > var x = new {{alias:@stdlib/array/float64}}( [ 1.0, -2.0, 3.0, 2.0, 5.0, -1.0 ] ); - > var N = {{alias:@stdlib/math/base/special/floor}}( x.length / 2 ); - > {{alias}}.ndarray( N, 5.0, x, 2, 1 ) + > {{alias}}.ndarray( 3, 5.0, x, 2, 1 ) 14.0 See Also diff --git a/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/examples/index.js index c4936244cec9..61f5f8a3589c 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/examples/index.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/examples/index.js @@ -18,18 +18,11 @@ 'use strict'; -var randu = require( '@stdlib/random/base/randu' ); -var round = require( '@stdlib/math/base/special/round' ); -var Float64Array = require( '@stdlib/array/float64' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var dapxsumkbn2 = require( './../lib' ); -var x; -var i; - -x = new Float64Array( 10 ); -for ( i = 0; i < x.length; i++ ) { - x[ i ] = round( randu()*100.0 ); -} +var x = filledarrayBy( 10, 'float64', discreteUniform( 0.0, 100.0 ) ); console.log( x ); var v = dapxsumkbn2( x.length, 5.0, x, 1 ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/include.gypi b/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/include.gypi index 868c5c12e852..26476a8c2655 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/include.gypi +++ b/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/include.gypi @@ -36,7 +36,7 @@ # Source files: 'src_files': [ - '<(src_dir)/addon.cpp', + '<(src_dir)/addon.c', ' +#include + +/** +* Receives JavaScript callback invocation data. +* +* @private +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 4 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_DOUBLE( env, alpha, argv, 1 ); + STDLIB_NAPI_ARGV_INT64( env, stride, argv, 3 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT64ARRAY( env, X, N, stride, argv, 2 ); + + napi_value v; + napi_status status = napi_create_double( env, stdlib_strided_dapxsumkbn2( N, alpha, X, stride ), &v ); + assert( status == napi_ok ); + + return v; +} + +STDLIB_NAPI_MODULE_EXPORT_FCN( addon ) diff --git a/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/src/addon.cpp b/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/src/addon.cpp deleted file mode 100644 index 85f62099ead9..000000000000 --- a/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/src/addon.cpp +++ /dev/null @@ -1,130 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2020 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/blas/ext/base/dapxsumkbn2.h" -#include -#include -#include -#include -#include - -/** -* Add-on namespace. -*/ -namespace stdlib_blas_ext_base_dapxsumkbn2 { - - /** - * Adds a constant to each double-precision floating-point strided array element and computes the sum using a second-order iterative Kahan–Babuška algorithm. - * - * ## Notes - * - * - When called from JavaScript, the function expects four arguments: - * - * - `N`: number of indexed elements - * - `alpha`: constant - * - `X`: input array - * - `stride`: stride length - */ - napi_value node_dapxsumkbn2( napi_env env, napi_callback_info info ) { - napi_status status; - - size_t argc = 4; - napi_value argv[ 4 ]; - status = napi_get_cb_info( env, info, &argc, argv, nullptr, nullptr ); - assert( status == napi_ok ); - - if ( argc < 4 ) { - napi_throw_error( env, nullptr, "invalid invocation. Must provide 4 arguments." ); - return nullptr; - } - - napi_valuetype vtype0; - status = napi_typeof( env, argv[ 0 ], &vtype0 ); - assert( status == napi_ok ); - if ( vtype0 != napi_number ) { - napi_throw_type_error( env, nullptr, "invalid argument. First argument must be a number." ); - return nullptr; - } - - napi_valuetype vtype1; - status = napi_typeof( env, argv[ 1 ], &vtype1 ); - assert( status == napi_ok ); - if ( vtype1 != napi_number ) { - napi_throw_type_error( env, nullptr, "invalid argument. Second argument must be a number." ); - return nullptr; - } - - bool res; - status = napi_is_typedarray( env, argv[ 2 ], &res ); - assert( status == napi_ok ); - if ( res == false ) { - napi_throw_type_error( env, nullptr, "invalid argument. Third argument must be a Float64Array." ); - return nullptr; - } - - napi_valuetype vtype3; - status = napi_typeof( env, argv[ 3 ], &vtype3 ); - assert( status == napi_ok ); - if ( vtype3 != napi_number ) { - napi_throw_type_error( env, nullptr, "invalid argument. Fourth argument must be a number." ); - return nullptr; - } - - int64_t N; - status = napi_get_value_int64( env, argv[ 0 ], &N ); - assert( status == napi_ok ); - - double alpha; - status = napi_get_value_double( env, argv[ 1 ], &alpha ); - assert( status == napi_ok ); - - int64_t stride; - status = napi_get_value_int64( env, argv[ 3 ], &stride ); - assert( status == napi_ok ); - - napi_typedarray_type vtype2; - size_t xlen; - void *X; - status = napi_get_typedarray_info( env, argv[ 2 ], &vtype2, &xlen, &X, nullptr, nullptr ); - assert( status == napi_ok ); - if ( vtype2 != napi_float64_array ) { - napi_throw_type_error( env, nullptr, "invalid argument. Third argument must be a Float64Array." ); - return nullptr; - } - if ( (N-1)*llabs(stride) >= (int64_t)xlen ) { - napi_throw_range_error( env, nullptr, "invalid argument. Third argument has insufficient elements based on the associated stride and the number of indexed elements." ); - return nullptr; - } - - napi_value v; - status = napi_create_double( env, stdlib_strided_dapxsumkbn2( N, alpha, (double *)X, stride ), &v ); - assert( status == napi_ok ); - - return v; - } - - napi_value Init( napi_env env, napi_value exports ) { - napi_status status; - napi_value fcn; - status = napi_create_function( env, "exports", NAPI_AUTO_LENGTH, node_dapxsumkbn2, NULL, &fcn ); - assert( status == napi_ok ); - return fcn; - } - - NAPI_MODULE( NODE_GYP_MODULE_NAME, Init ) -} // end namespace stdlib_blas_ext_base_dapxsumkbn2 diff --git a/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/test/test.dapxsumkbn2.js b/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/test/test.dapxsumkbn2.js index f241b07035cc..a29a00c58908 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/test/test.dapxsumkbn2.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/test/test.dapxsumkbn2.js @@ -21,7 +21,6 @@ // MODULES // var tape = require( 'tape' ); -var floor = require( '@stdlib/math/base/special/floor' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var Float64Array = require( '@stdlib/array/float64' ); var dapxsumkbn2 = require( './../lib/dapxsumkbn2.js' ); @@ -36,7 +35,7 @@ tape( 'main export is a function', function test( t ) { }); tape( 'the function has an arity of 4', function test( t ) { - t.strictEqual( dapxsumkbn2.length, 4, 'has expected arity' ); + t.strictEqual( dapxsumkbn2.length, 4, 'returns expected value' ); t.end(); }); @@ -95,7 +94,6 @@ tape( 'if provided an `N` parameter equal to `1`, the function returns the first }); tape( 'the function supports a `stride` parameter', function test( t ) { - var N; var x; var v; @@ -110,15 +108,13 @@ tape( 'the function supports a `stride` parameter', function test( t ) { 2.0 ]); - N = floor( x.length / 2 ); - v = dapxsumkbn2( N, 5.0, x, 2 ); + v = dapxsumkbn2( 4, 5.0, x, 2 ); t.strictEqual( v, 25.0, 'returns expected value' ); t.end(); }); tape( 'the function supports a negative `stride` parameter', function test( t ) { - var N; var x; var v; @@ -133,8 +129,7 @@ tape( 'the function supports a negative `stride` parameter', function test( t ) 2.0 ]); - N = floor( x.length / 2 ); - v = dapxsumkbn2( N, 5.0, x, -2 ); + v = dapxsumkbn2( 4, 5.0, x, -2 ); t.strictEqual( v, 25.0, 'returns expected value' ); t.end(); @@ -155,7 +150,6 @@ tape( 'if provided a `stride` parameter equal to `0`, the function returns the f tape( 'the function supports view offsets', function test( t ) { var x0; var x1; - var N; var v; x0 = new Float64Array([ @@ -171,9 +165,8 @@ tape( 'the function supports view offsets', function test( t ) { ]); x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element - N = floor(x1.length / 2); - v = dapxsumkbn2( N, 5.0, x1, 2 ); + v = dapxsumkbn2( 4, 5.0, x1, 2 ); t.strictEqual( v, 25.0, 'returns expected value' ); t.end(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/test/test.dapxsumkbn2.native.js b/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/test/test.dapxsumkbn2.native.js index c1581a938346..37c2a93cc5b3 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/test/test.dapxsumkbn2.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/test/test.dapxsumkbn2.native.js @@ -22,7 +22,6 @@ var resolve = require( 'path' ).resolve; var tape = require( 'tape' ); -var floor = require( '@stdlib/math/base/special/floor' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var Float64Array = require( '@stdlib/array/float64' ); var tryRequire = require( '@stdlib/utils/try-require' ); @@ -45,7 +44,7 @@ tape( 'main export is a function', opts, function test( t ) { }); tape( 'the function has an arity of 4', opts, function test( t ) { - t.strictEqual( dapxsumkbn2.length, 4, 'has expected arity' ); + t.strictEqual( dapxsumkbn2.length, 4, 'returns expected value' ); t.end(); }); @@ -213,7 +212,6 @@ tape( 'if provided an `N` parameter equal to `1`, the function returns the first }); tape( 'the function supports a `stride` parameter', opts, function test( t ) { - var N; var x; var v; @@ -228,15 +226,13 @@ tape( 'the function supports a `stride` parameter', opts, function test( t ) { 2.0 ]); - N = floor( x.length / 2 ); - v = dapxsumkbn2( N, 5.0, x, 2 ); + v = dapxsumkbn2( 4, 5.0, x, 2 ); t.strictEqual( v, 25.0, 'returns expected value' ); t.end(); }); tape( 'the function supports a negative `stride` parameter', opts, function test( t ) { - var N; var x; var v; @@ -251,8 +247,7 @@ tape( 'the function supports a negative `stride` parameter', opts, function test 2.0 ]); - N = floor( x.length / 2 ); - v = dapxsumkbn2( N, 5.0, x, -2 ); + v = dapxsumkbn2( 4, 5.0, x, -2 ); t.strictEqual( v, 25.0, 'returns expected value' ); t.end(); @@ -273,7 +268,6 @@ tape( 'if provided a `stride` parameter equal to `0`, the function returns the f tape( 'the function supports view offsets', opts, function test( t ) { var x0; var x1; - var N; var v; x0 = new Float64Array([ @@ -289,9 +283,8 @@ tape( 'the function supports view offsets', opts, function test( t ) { ]); x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element - N = floor(x1.length / 2); - v = dapxsumkbn2( N, 5.0, x1, 2 ); + v = dapxsumkbn2( 4, 5.0, x1, 2 ); t.strictEqual( v, 25.0, 'returns expected value' ); t.end(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/test/test.ndarray.js index ea90f84a6a91..957d44cab925 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/test/test.ndarray.js @@ -21,7 +21,6 @@ // MODULES // var tape = require( 'tape' ); -var floor = require( '@stdlib/math/base/special/floor' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var Float64Array = require( '@stdlib/array/float64' ); var dapxsumkbn2 = require( './../lib/ndarray.js' ); @@ -36,7 +35,7 @@ tape( 'main export is a function', function test( t ) { }); tape( 'the function has an arity of 5', function test( t ) { - t.strictEqual( dapxsumkbn2.length, 5, 'has expected arity' ); + t.strictEqual( dapxsumkbn2.length, 5, 'returns expected value' ); t.end(); }); @@ -95,7 +94,6 @@ tape( 'if provided an `N` parameter equal to `1`, the function returns the first }); tape( 'the function supports a `stride` parameter', function test( t ) { - var N; var x; var v; @@ -110,15 +108,13 @@ tape( 'the function supports a `stride` parameter', function test( t ) { 2.0 ]); - N = floor( x.length / 2 ); - v = dapxsumkbn2( N, 5.0, x, 2, 0 ); + v = dapxsumkbn2( 4, 5.0, x, 2, 0 ); t.strictEqual( v, 25.0, 'returns expected value' ); t.end(); }); tape( 'the function supports a negative `stride` parameter', function test( t ) { - var N; var x; var v; @@ -133,8 +129,7 @@ tape( 'the function supports a negative `stride` parameter', function test( t ) 2.0 ]); - N = floor( x.length / 2 ); - v = dapxsumkbn2( N, 5.0, x, -2, 6 ); + v = dapxsumkbn2( 4, 5.0, x, -2, 6 ); t.strictEqual( v, 25.0, 'returns expected value' ); t.end(); @@ -153,7 +148,6 @@ tape( 'if provided a `stride` parameter equal to `0`, the function returns the f }); tape( 'the function supports an `offset` parameter', function test( t ) { - var N; var x; var v; @@ -167,9 +161,8 @@ tape( 'the function supports an `offset` parameter', function test( t ) { 3.0, 4.0 // 3 ]); - N = floor( x.length / 2 ); - v = dapxsumkbn2( N, 5.0, x, 2, 1 ); + v = dapxsumkbn2( 4, 5.0, x, 2, 1 ); t.strictEqual( v, 25.0, 'returns expected value' ); t.end(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/test/test.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/test/test.ndarray.native.js index 36b63e5cf52e..f4d868f2e284 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/test/test.ndarray.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dapxsumkbn2/test/test.ndarray.native.js @@ -22,7 +22,6 @@ var resolve = require( 'path' ).resolve; var tape = require( 'tape' ); -var floor = require( '@stdlib/math/base/special/floor' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var Float64Array = require( '@stdlib/array/float64' ); var tryRequire = require( '@stdlib/utils/try-require' ); @@ -45,7 +44,7 @@ tape( 'main export is a function', opts, function test( t ) { }); tape( 'the function has an arity of 5', opts, function test( t ) { - t.strictEqual( dapxsumkbn2.length, 5, 'has expected arity' ); + t.strictEqual( dapxsumkbn2.length, 5, 'returns expected value' ); t.end(); }); @@ -104,7 +103,6 @@ tape( 'if provided an `N` parameter equal to `1`, the function returns the first }); tape( 'the function supports a `stride` parameter', opts, function test( t ) { - var N; var x; var v; @@ -119,15 +117,13 @@ tape( 'the function supports a `stride` parameter', opts, function test( t ) { 2.0 ]); - N = floor( x.length / 2 ); - v = dapxsumkbn2( N, 5.0, x, 2, 0 ); + v = dapxsumkbn2( 4, 5.0, x, 2, 0 ); t.strictEqual( v, 25.0, 'returns expected value' ); t.end(); }); tape( 'the function supports a negative `stride` parameter', opts, function test( t ) { - var N; var x; var v; @@ -142,8 +138,7 @@ tape( 'the function supports a negative `stride` parameter', opts, function test 2.0 ]); - N = floor( x.length / 2 ); - v = dapxsumkbn2( N, 5.0, x, -2, 6 ); + v = dapxsumkbn2( 4, 5.0, x, -2, 6 ); t.strictEqual( v, 25.0, 'returns expected value' ); t.end(); @@ -162,7 +157,6 @@ tape( 'if provided a `stride` parameter equal to `0`, the function returns the f }); tape( 'the function supports an `offset` parameter', opts, function test( t ) { - var N; var x; var v; @@ -176,9 +170,8 @@ tape( 'the function supports an `offset` parameter', opts, function test( t ) { 3.0, 4.0 // 3 ]); - N = floor( x.length / 2 ); - v = dapxsumkbn2( N, 5.0, x, 2, 1 ); + v = dapxsumkbn2( 4, 5.0, x, 2, 1 ); t.strictEqual( v, 25.0, 'returns expected value' ); t.end(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dasumpw/README.md b/lib/node_modules/@stdlib/blas/ext/base/dasumpw/README.md index 505ba34be09c..0409e7d63c78 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dasumpw/README.md +++ b/lib/node_modules/@stdlib/blas/ext/base/dasumpw/README.md @@ -71,16 +71,14 @@ The function has the following parameters: - **x**: input [`Float64Array`][@stdlib/array/float64]. - **stride**: index increment for `x`. -The `N` and `stride` parameters determine which elements in `x` are accessed at runtime. For example, to compute the sum of absolute values of every other element in `x`, +The `N` and stride parameters determine which elements in the strided array are accessed at runtime. For example, to compute the sum of absolute values of every other element in `x`, ```javascript var Float64Array = require( '@stdlib/array/float64' ); -var floor = require( '@stdlib/math/base/special/floor' ); var x = new Float64Array( [ 1.0, 2.0, 2.0, -7.0, -2.0, 3.0, 4.0, 2.0 ] ); -var N = floor( x.length / 2 ); -var v = dasumpw( N, x, 2 ); +var v = dasumpw( 4, x, 2 ); // returns 9.0 ``` @@ -90,14 +88,11 @@ Note that indexing is relative to the first index. To introduce an offset, use [ ```javascript var Float64Array = require( '@stdlib/array/float64' ); -var floor = require( '@stdlib/math/base/special/floor' ); var x0 = new Float64Array( [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0 ] ); var x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element -var N = floor( x0.length / 2 ); - -var v = dasumpw( N, x1, 2 ); +var v = dasumpw( 4, x1, 2 ); // returns 9.0 ``` @@ -123,12 +118,10 @@ While [`typed array`][mdn-typed-array] views mandate a view offset based on the ```javascript var Float64Array = require( '@stdlib/array/float64' ); -var floor = require( '@stdlib/math/base/special/floor' ); var x = new Float64Array( [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0 ] ); -var N = floor( x.length / 2 ); -var v = dasumpw.ndarray( N, x, 2, 1 ); +var v = dasumpw.ndarray( 4, x, 2, 1 ); // returns 9.0 ``` @@ -154,18 +147,11 @@ var v = dasumpw.ndarray( N, x, 2, 1 ); ```javascript -var randu = require( '@stdlib/random/base/randu' ); -var round = require( '@stdlib/math/base/special/round' ); -var Float64Array = require( '@stdlib/array/float64' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var dasumpw = require( '@stdlib/blas/ext/base/dasumpw' ); -var x; -var i; - -x = new Float64Array( 10 ); -for ( i = 0; i < x.length; i++ ) { - x[ i ] = round( randu()*100.0 ); -} +var x = filledarrayBy( 10, 'float64', discreteUniform( 0, 100 ) ); console.log( x ); var v = dasumpw( x.length, x, 1 ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dasumpw/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/dasumpw/benchmark/benchmark.js index af5e0780e4eb..90ab3e8a33bb 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dasumpw/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dasumpw/benchmark/benchmark.js @@ -21,14 +21,19 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/base/uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); -var Float64Array = require( '@stdlib/array/float64' ); var pkg = require( './../package.json' ).name; var dasumpw = require( './../lib/dasumpw.js' ); +// VARIABLES // + +var rand = uniform( -100.0, 100.0 ); + + // FUNCTIONS // /** @@ -39,13 +44,7 @@ var dasumpw = require( './../lib/dasumpw.js' ); * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x; - var i; - - x = new Float64Array( len ); - for ( i = 0; i < x.length; i++ ) { - x[ i ] = ( randu()*20.0 ) - 10.0; - } + var x = filledarrayBy( len, 'float64', rand ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/blas/ext/base/dasumpw/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/blas/ext/base/dasumpw/benchmark/benchmark.native.js index fc9e4c753405..610dafc3a3e9 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dasumpw/benchmark/benchmark.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dasumpw/benchmark/benchmark.native.js @@ -22,10 +22,10 @@ var resolve = require( 'path' ).resolve; var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/base/uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); -var Float64Array = require( '@stdlib/array/float64' ); var tryRequire = require( '@stdlib/utils/try-require' ); var pkg = require( './../package.json' ).name; @@ -36,6 +36,7 @@ var dasumpw = tryRequire( resolve( __dirname, './../lib/dasumpw.native.js' ) ); var opts = { 'skip': ( dasumpw instanceof Error ) }; +var rand = uniform( -100.0, 100.0 ); // FUNCTIONS // @@ -48,13 +49,7 @@ var opts = { * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x; - var i; - - x = new Float64Array( len ); - for ( i = 0; i < x.length; i++ ) { - x[ i ] = ( randu()*20.0 ) - 10.0; - } + var x = filledarrayBy( len, 'float64', rand ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/blas/ext/base/dasumpw/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/dasumpw/benchmark/benchmark.ndarray.js index 27ad79439608..a171c49f3faa 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dasumpw/benchmark/benchmark.ndarray.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dasumpw/benchmark/benchmark.ndarray.js @@ -21,14 +21,19 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/base/uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); -var Float64Array = require( '@stdlib/array/float64' ); var pkg = require( './../package.json' ).name; var dasumpw = require( './../lib/ndarray.js' ); +// VARIABLES // + +var rand = uniform( -100.0, 100.0 ); + + // FUNCTIONS // /** @@ -39,13 +44,7 @@ var dasumpw = require( './../lib/ndarray.js' ); * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x; - var i; - - x = new Float64Array( len ); - for ( i = 0; i < x.length; i++ ) { - x[ i ] = ( randu()*20.0 ) - 10.0; - } + var x = filledarrayBy( len, 'float64', rand ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/blas/ext/base/dasumpw/benchmark/benchmark.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/dasumpw/benchmark/benchmark.ndarray.native.js index 638754aa8ed1..c9d57e4634d9 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dasumpw/benchmark/benchmark.ndarray.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dasumpw/benchmark/benchmark.ndarray.native.js @@ -22,10 +22,10 @@ var resolve = require( 'path' ).resolve; var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/base/uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); -var Float64Array = require( '@stdlib/array/float64' ); var tryRequire = require( '@stdlib/utils/try-require' ); var pkg = require( './../package.json' ).name; @@ -36,6 +36,7 @@ var dasumpw = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); var opts = { 'skip': ( dasumpw instanceof Error ) }; +var rand = uniform( -100.0, 100.0 ); // FUNCTIONS // @@ -48,13 +49,7 @@ var opts = { * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x; - var i; - - x = new Float64Array( len ); - for ( i = 0; i < x.length; i++ ) { - x[ i ] = ( randu()*20.0 ) - 10.0; - } + var x = filledarrayBy( len, 'float64', rand ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/blas/ext/base/dasumpw/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/dasumpw/examples/index.js index 55576b9d1af9..96b5f7748224 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dasumpw/examples/index.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dasumpw/examples/index.js @@ -18,18 +18,11 @@ 'use strict'; -var randu = require( '@stdlib/random/base/randu' ); -var round = require( '@stdlib/math/base/special/round' ); -var Float64Array = require( '@stdlib/array/float64' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var dasumpw = require( './../lib' ); -var x; -var i; - -x = new Float64Array( 10 ); -for ( i = 0; i < x.length; i++ ) { - x[ i ] = round( randu()*100.0 ); -} +var x = filledarrayBy( 10, 'float64', discreteUniform( -100.0, 100.0 ) ); console.log( x ); var v = dasumpw( x.length, x, 1 ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dasumpw/include.gypi b/lib/node_modules/@stdlib/blas/ext/base/dasumpw/include.gypi index 868c5c12e852..26476a8c2655 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dasumpw/include.gypi +++ b/lib/node_modules/@stdlib/blas/ext/base/dasumpw/include.gypi @@ -36,7 +36,7 @@ # Source files: 'src_files': [ - '<(src_dir)/addon.cpp', + '<(src_dir)/addon.c', ' +#include + +/** +* Receives JavaScript callback invocation data. +* +* @private +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 3 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 2 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT64ARRAY( env, X, N, strideX, argv, 1 ); + + napi_value v; + napi_status status = napi_create_double( env, stdlib_strided_dasumpw( N, X, strideX ), &v ); + assert( status == napi_ok ); + + return v; +} + +STDLIB_NAPI_MODULE_EXPORT_FCN( addon ) \ No newline at end of file diff --git a/lib/node_modules/@stdlib/blas/ext/base/dasumpw/src/addon.cpp b/lib/node_modules/@stdlib/blas/ext/base/dasumpw/src/addon.cpp deleted file mode 100644 index feba4280caa2..000000000000 --- a/lib/node_modules/@stdlib/blas/ext/base/dasumpw/src/addon.cpp +++ /dev/null @@ -1,117 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2020 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/blas/ext/base/dasumpw.h" -#include -#include -#include -#include -#include - -/** -* Add-on namespace. -*/ -namespace stdlib_blas_ext_base_dasumpw { - - /** - * Computes the sum of absolute values (L1 norm) of double-precision floating-point strided array elements using pairwise summation. - * - * ## Notes - * - * - When called from JavaScript, the function expects three arguments: - * - * - `N`: number of indexed elements - * - `X`: input array - * - `stride`: stride length - */ - napi_value node_dasumpw( napi_env env, napi_callback_info info ) { - napi_status status; - - size_t argc = 3; - napi_value argv[ 3 ]; - status = napi_get_cb_info( env, info, &argc, argv, nullptr, nullptr ); - assert( status == napi_ok ); - - if ( argc < 3 ) { - napi_throw_error( env, nullptr, "invalid invocation. Must provide 3 arguments." ); - return nullptr; - } - - napi_valuetype vtype0; - status = napi_typeof( env, argv[ 0 ], &vtype0 ); - assert( status == napi_ok ); - if ( vtype0 != napi_number ) { - napi_throw_type_error( env, nullptr, "invalid argument. First argument must be a number." ); - return nullptr; - } - - bool res; - status = napi_is_typedarray( env, argv[ 1 ], &res ); - assert( status == napi_ok ); - if ( res == false ) { - napi_throw_type_error( env, nullptr, "invalid argument. Second argument must be a Float64Array." ); - return nullptr; - } - - napi_valuetype vtype2; - status = napi_typeof( env, argv[ 2 ], &vtype2 ); - assert( status == napi_ok ); - if ( vtype2 != napi_number ) { - napi_throw_type_error( env, nullptr, "invalid argument. Third argument must be a number." ); - return nullptr; - } - - int64_t N; - status = napi_get_value_int64( env, argv[ 0 ], &N ); - assert( status == napi_ok ); - - int64_t stride; - status = napi_get_value_int64( env, argv[ 2 ], &stride ); - assert( status == napi_ok ); - - napi_typedarray_type vtype1; - size_t xlen; - void *X; - status = napi_get_typedarray_info( env, argv[ 1 ], &vtype1, &xlen, &X, nullptr, nullptr ); - assert( status == napi_ok ); - if ( vtype1 != napi_float64_array ) { - napi_throw_type_error( env, nullptr, "invalid argument. Second argument must be a Float64Array." ); - return nullptr; - } - if ( (N-1)*llabs(stride) >= (int64_t)xlen ) { - napi_throw_range_error( env, nullptr, "invalid argument. Second argument has insufficient elements based on the associated stride and the number of indexed elements." ); - return nullptr; - } - - napi_value v; - status = napi_create_double( env, stdlib_strided_dasumpw( N, (double *)X, stride ), &v ); - assert( status == napi_ok ); - - return v; - } - - napi_value Init( napi_env env, napi_value exports ) { - napi_status status; - napi_value fcn; - status = napi_create_function( env, "exports", NAPI_AUTO_LENGTH, node_dasumpw, NULL, &fcn ); - assert( status == napi_ok ); - return fcn; - } - - NAPI_MODULE( NODE_GYP_MODULE_NAME, Init ) -} // end namespace stdlib_blas_ext_base_dasumpw diff --git a/lib/node_modules/@stdlib/blas/ext/base/dasumpw/test/test.dasumpw.js b/lib/node_modules/@stdlib/blas/ext/base/dasumpw/test/test.dasumpw.js index 604753540797..6b76f6d8d5da 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dasumpw/test/test.dasumpw.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dasumpw/test/test.dasumpw.js @@ -21,7 +21,6 @@ // MODULES // var tape = require( 'tape' ); -var floor = require( '@stdlib/math/base/special/floor' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var Float64Array = require( '@stdlib/array/float64' ); var dasumpw = require( './../lib/dasumpw.js' ); @@ -36,7 +35,7 @@ tape( 'main export is a function', function test( t ) { }); tape( 'the function has an arity of 3', function test( t ) { - t.strictEqual( dasumpw.length, 3, 'has expected arity' ); + t.strictEqual( dasumpw.length, 3, 'returns expected value' ); t.end(); }); @@ -103,9 +102,9 @@ tape( 'if provided an `N` parameter equal to `1`, the function returns the first }); tape( 'the function supports a `stride` parameter', function test( t ) { - var N; var x; var v; + var N; x = new Float64Array([ 1.0, // 0 @@ -118,7 +117,7 @@ tape( 'the function supports a `stride` parameter', function test( t ) { 2.0 ]); - N = floor( x.length / 2 ); + N = 4; v = dasumpw( N, x, 2 ); t.strictEqual( v, 9.0, 'returns expected value' ); @@ -142,7 +141,7 @@ tape( 'the function supports a negative `stride` parameter', function test( t ) 2.0 ]); - N = floor( x.length / 2 ); + N = 4; v = dasumpw( N, x, -2 ); t.strictEqual( v, 9.0, 'returns expected value' ); @@ -172,8 +171,8 @@ tape( 'if provided a `stride` parameter equal to `0`, the function returns the f tape( 'the function supports view offsets', function test( t ) { var x0; var x1; - var N; var v; + var N; x0 = new Float64Array([ 2.0, @@ -187,8 +186,8 @@ tape( 'the function supports view offsets', function test( t ) { 6.0 ]); + N = 4; x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element - N = floor(x1.length / 2); v = dasumpw( N, x1, 2 ); t.strictEqual( v, 9.0, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dasumpw/test/test.dasumpw.native.js b/lib/node_modules/@stdlib/blas/ext/base/dasumpw/test/test.dasumpw.native.js index a5a7def0be92..2e1dc712cd8e 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dasumpw/test/test.dasumpw.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dasumpw/test/test.dasumpw.native.js @@ -22,7 +22,6 @@ var resolve = require( 'path' ).resolve; var tape = require( 'tape' ); -var floor = require( '@stdlib/math/base/special/floor' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var Float64Array = require( '@stdlib/array/float64' ); var tryRequire = require( '@stdlib/utils/try-require' ); @@ -45,7 +44,7 @@ tape( 'main export is a function', opts, function test( t ) { }); tape( 'the function has an arity of 3', opts, function test( t ) { - t.strictEqual( dasumpw.length, 3, 'has expected arity' ); + t.strictEqual( dasumpw.length, 3, 'returns expected value' ); t.end(); }); @@ -209,7 +208,7 @@ tape( 'the function supports a `stride` parameter', opts, function test( t ) { 2.0 ]); - N = floor( x.length / 2 ); + N = 4; v = dasumpw( N, x, 2 ); t.strictEqual( v, 9.0, 'returns expected value' ); @@ -233,7 +232,7 @@ tape( 'the function supports a negative `stride` parameter', opts, function test 2.0 ]); - N = floor( x.length / 2 ); + N = 4; v = dasumpw( N, x, -2 ); t.strictEqual( v, 9.0, 'returns expected value' ); @@ -279,7 +278,7 @@ tape( 'the function supports view offsets', opts, function test( t ) { ]); x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element - N = floor(x1.length / 2); + N = 4; v = dasumpw( N, x1, 2 ); t.strictEqual( v, 9.0, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dasumpw/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/dasumpw/test/test.ndarray.js index 3b9cf430c9e0..40e273a42b56 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dasumpw/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dasumpw/test/test.ndarray.js @@ -21,7 +21,6 @@ // MODULES // var tape = require( 'tape' ); -var floor = require( '@stdlib/math/base/special/floor' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var Float64Array = require( '@stdlib/array/float64' ); var dasumpw = require( './../lib/ndarray.js' ); @@ -36,7 +35,7 @@ tape( 'main export is a function', function test( t ) { }); tape( 'the function has an arity of 4', function test( t ) { - t.strictEqual( dasumpw.length, 4, 'has expected arity' ); + t.strictEqual( dasumpw.length, 4, 'returns expected value' ); t.end(); }); @@ -118,7 +117,7 @@ tape( 'the function supports a `stride` parameter', function test( t ) { 2.0 ]); - N = floor( x.length / 2 ); + N = 4; v = dasumpw( N, x, 2, 0 ); t.strictEqual( v, 9.0, 'returns expected value' ); @@ -142,7 +141,7 @@ tape( 'the function supports a negative `stride` parameter', function test( t ) 2.0 ]); - N = floor( x.length / 2 ); + N = 4; v = dasumpw( N, x, -2, 6 ); t.strictEqual( v, 9.0, 'returns expected value' ); @@ -184,7 +183,7 @@ tape( 'the function supports an `offset` parameter', function test( t ) { 3.0, 4.0 // 3 ]); - N = floor( x.length / 2 ); + N = 4; v = dasumpw( N, x, 2, 1 ); t.strictEqual( v, 9.0, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dasumpw/test/test.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/dasumpw/test/test.ndarray.native.js index d9a0fe612203..4fab38b1afdc 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dasumpw/test/test.ndarray.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dasumpw/test/test.ndarray.native.js @@ -22,7 +22,6 @@ var resolve = require( 'path' ).resolve; var tape = require( 'tape' ); -var floor = require( '@stdlib/math/base/special/floor' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var Float64Array = require( '@stdlib/array/float64' ); var tryRequire = require( '@stdlib/utils/try-require' ); @@ -45,7 +44,7 @@ tape( 'main export is a function', opts, function test( t ) { }); tape( 'the function has an arity of 4', opts, function test( t ) { - t.strictEqual( dasumpw.length, 4, 'has expected arity' ); + t.strictEqual( dasumpw.length, 4, 'returns expected value' ); t.end(); }); @@ -127,7 +126,7 @@ tape( 'the function supports a `stride` parameter', opts, function test( t ) { 2.0 ]); - N = floor( x.length / 2 ); + N = 4; v = dasumpw( N, x, 2, 0 ); t.strictEqual( v, 9.0, 'returns expected value' ); @@ -151,7 +150,7 @@ tape( 'the function supports a negative `stride` parameter', opts, function test 2.0 ]); - N = floor( x.length / 2 ); + N = 4; v = dasumpw( N, x, -2, 6 ); t.strictEqual( v, 9.0, 'returns expected value' ); @@ -193,7 +192,7 @@ tape( 'the function supports an `offset` parameter', opts, function test( t ) { 3.0, 4.0 // 3 ]); - N = floor( x.length / 2 ); + N = 4; v = dasumpw( N, x, 2, 1 ); t.strictEqual( v, 9.0, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dcusumors/README.md b/lib/node_modules/@stdlib/blas/ext/base/dcusumors/README.md index f32cc33e3fd3..cc7706f58d7a 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dcusumors/README.md +++ b/lib/node_modules/@stdlib/blas/ext/base/dcusumors/README.md @@ -65,18 +65,15 @@ The function has the following parameters: - **y**: output [`Float64Array`][@stdlib/array/float64]. - **strideY**: index increment for `y`. -The `N` and `stride` parameters determine which elements in `x` and `y` are accessed at runtime. For example, to compute the cumulative sum of every other element in `x`, +The `N` and stride parameters determine which elements in the strided arrays are accessed at runtime. For example, to compute the cumulative sum of every other element in the strided input array, ```javascript var Float64Array = require( '@stdlib/array/float64' ); -var floor = require( '@stdlib/math/base/special/floor' ); var x = new Float64Array( [ 1.0, 2.0, 2.0, -7.0, -2.0, 3.0, 4.0, 2.0 ] ); var y = new Float64Array( x.length ); -var N = floor( x.length / 2 ); - -var v = dcusumors( N, 0.0, x, 2, y, 1 ); +var v = dcusumors( 4, 0.0, x, 2, y, 1 ); // y => [ 1.0, 3.0, 1.0, 5.0, 0.0, 0.0, 0.0, 0.0 ] ``` @@ -86,7 +83,6 @@ Note that indexing is relative to the first index. To introduce an offset, use [ ```javascript var Float64Array = require( '@stdlib/array/float64' ); -var floor = require( '@stdlib/math/base/special/floor' ); // Initial arrays... var x0 = new Float64Array( [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0 ] ); @@ -96,9 +92,7 @@ var y0 = new Float64Array( x0.length ); var x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element var y1 = new Float64Array( y0.buffer, y0.BYTES_PER_ELEMENT*3 ); // start at 4th element -var N = floor( x0.length / 2 ); - -dcusumors( N, 0.0, x1, -2, y1, 1 ); +dcusumors( 4, 0.0, x1, -2, y1, 1 ); // y0 => [ 0.0, 0.0, 0.0, 4.0, 6.0, 4.0, 5.0, 0.0 ] ``` @@ -121,18 +115,15 @@ The function has the following additional parameters: - **offsetX**: starting index for `x`. - **offsetY**: starting index for `y`. -While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying `buffer`, `offsetX` and `offsetY` parameters support indexing semantics based on a starting indices. For example, to calculate the cumulative sum of every other value in `x` starting from the second value and to store in the last `N` elements of `y` starting from the last element +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying `buffer`, `offsetX` and `offsetY` parameters support indexing semantics based on a starting indices. For example, to calculate the cumulative sum of every other value in the strided input array starting from the second value and to store in the last `N` elements of the strided output array starting from the last element ```javascript var Float64Array = require( '@stdlib/array/float64' ); -var floor = require( '@stdlib/math/base/special/floor' ); var x = new Float64Array( [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0 ] ); var y = new Float64Array( x.length ); -var N = floor( x.length / 2 ); - -dcusumors.ndarray( N, 0.0, x, 2, 1, y, -1, y.length-1 ); +dcusumors.ndarray( 4, 0.0, x, 2, 1, y, -1, y.length-1 ); // y => [ 0.0, 0.0, 0.0, 0.0, 5.0, 1.0, -1.0, 1.0 ] ``` @@ -158,20 +149,14 @@ dcusumors.ndarray( N, 0.0, x, 2, 1, y, -1, y.length-1 ); ```javascript -var randu = require( '@stdlib/random/base/randu' ); -var round = require( '@stdlib/math/base/special/round' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var Float64Array = require( '@stdlib/array/float64' ); var dcusumors = require( '@stdlib/blas/ext/base/dcusumors' ); -var y; -var x; -var i; +var x = filledarrayBy( 10, 'float64', discreteUniform( 0, 100 ) ); +var y = new Float64Array( x.length ); -x = new Float64Array( 10 ); -y = new Float64Array( x.length ); -for ( i = 0; i < x.length; i++ ) { - x[ i ] = round( randu()*100.0 ); -} console.log( x ); console.log( y ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dcusumors/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/dcusumors/benchmark/benchmark.js index 87adfafa3f9c..5022df2c1756 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dcusumors/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dcusumors/benchmark/benchmark.js @@ -21,7 +21,8 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/base/uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); var Float64Array = require( '@stdlib/array/float64' ); @@ -29,6 +30,11 @@ var pkg = require( './../package.json' ).name; var dcusumors = require( './../lib/dcusumors.js' ); +// VARIABLES // + +var rand = uniform( -10.0, 10.0 ); + + // FUNCTIONS // /** @@ -39,15 +45,8 @@ var dcusumors = require( './../lib/dcusumors.js' ); * @returns {Function} benchmark function */ function createBenchmark( len ) { - var y; - var x; - var i; - - x = new Float64Array( len ); - y = new Float64Array( len ); - for ( i = 0; i < x.length; i++ ) { - x[ i ] = ( randu()*20.0 ) - 10.0; - } + var x = filledarrayBy( len, 'float64', rand ); + var y = new Float64Array( len ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/blas/ext/base/dcusumors/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/blas/ext/base/dcusumors/benchmark/benchmark.native.js index a33141439999..37792d8f2e81 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dcusumors/benchmark/benchmark.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dcusumors/benchmark/benchmark.native.js @@ -22,7 +22,8 @@ var resolve = require( 'path' ).resolve; var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/base/uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); var Float64Array = require( '@stdlib/array/float64' ); @@ -32,6 +33,7 @@ var pkg = require( './../package.json' ).name; // VARIABLES // +var rand = uniform( -10.0, 10.0 ); var dcusumors = tryRequire( resolve( __dirname, './../lib/dcusumors.native.js' ) ); var opts = { 'skip': ( dcusumors instanceof Error ) @@ -48,15 +50,8 @@ var opts = { * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x; - var y; - var i; - - x = new Float64Array( len ); - y = new Float64Array( len ); - for ( i = 0; i < x.length; i++ ) { - x[ i ] = ( randu()*20.0 ) - 10.0; - } + var x = filledarrayBy( len, 'float64', rand ); + var y = new Float64Array( len ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/blas/ext/base/dcusumors/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/dcusumors/benchmark/benchmark.ndarray.js index 38570e18814d..0b900d440a70 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dcusumors/benchmark/benchmark.ndarray.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dcusumors/benchmark/benchmark.ndarray.js @@ -21,7 +21,8 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/base/uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); var Float64Array = require( '@stdlib/array/float64' ); @@ -29,6 +30,11 @@ var pkg = require( './../package.json' ).name; var dcusumors = require( './../lib/ndarray.js' ); +// VARIABLES // + +var rand = uniform( -10.0, 10.0 ); + + // FUNCTIONS // /** @@ -39,15 +45,8 @@ var dcusumors = require( './../lib/ndarray.js' ); * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x; - var y; - var i; - - x = new Float64Array( len ); - y = new Float64Array( len ); - for ( i = 0; i < x.length; i++ ) { - x[ i ] = ( randu()*20.0 ) - 10.0; - } + var x = filledarrayBy( len, 'float64', rand ); + var y = new Float64Array( len ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/blas/ext/base/dcusumors/benchmark/benchmark.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/dcusumors/benchmark/benchmark.ndarray.native.js index c31033d7bc4b..4d25cae430ea 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dcusumors/benchmark/benchmark.ndarray.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dcusumors/benchmark/benchmark.ndarray.native.js @@ -22,7 +22,8 @@ var resolve = require( 'path' ).resolve; var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/base/uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); var Float64Array = require( '@stdlib/array/float64' ); @@ -32,6 +33,7 @@ var pkg = require( './../package.json' ).name; // VARIABLES // +var rand = uniform( -10.0, 10.0 ); var dcusumors = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); var opts = { 'skip': ( dcusumors instanceof Error ) @@ -48,15 +50,8 @@ var opts = { * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x; - var y; - var i; - - x = new Float64Array( len ); - y = new Float64Array( len ); - for ( i = 0; i < x.length; i++ ) { - x[ i ] = ( randu()*20.0 ) - 10.0; - } + var x = filledarrayBy( len, 'float64', rand ); + var y = new Float64Array( len ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/blas/ext/base/dcusumors/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/dcusumors/docs/repl.txt index 25cf1a39f184..cd2c847aa730 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dcusumors/docs/repl.txt +++ b/lib/node_modules/@stdlib/blas/ext/base/dcusumors/docs/repl.txt @@ -3,8 +3,8 @@ Computes the cumulative sum of double-precision floating-point strided array elements using ordinary recursive summation. - The `N` and `stride` parameters determine which elements in `x` and `y` are - accessed at runtime. + The `N` and `stride` parameters determine which elements in the strided + arrays are accessed at runtime. Indexing is relative to the first index. To introduce an offset, use a typed array view. @@ -47,8 +47,7 @@ // Using `N` and `stride` parameters: > x = new {{alias:@stdlib/array/float64}}( [ -2.0, 1.0, 1.0, -5.0, 2.0, -1.0 ] ); > y = new {{alias:@stdlib/array/float64}}( x.length ); - > var N = {{alias:@stdlib/math/base/special/floor}}( x.length / 2 ); - > {{alias}}( N, 0.0, x, 2, y, 2 ) + > {{alias}}( 3, 0.0, x, 2, y, 2 ) [ -2.0, 0.0, -1.0, 0.0, 1.0, 0.0 ] // Using view offsets: @@ -56,12 +55,12 @@ > var y0 = new {{alias:@stdlib/array/float64}}( x0.length ); > var x1 = new {{alias:@stdlib/array/float64}}( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); > var y1 = new {{alias:@stdlib/array/float64}}( y0.buffer, y0.BYTES_PER_ELEMENT*3 ); - > N = {{alias:@stdlib/math/base/special/floor}}( x0.length / 2 ); - > {{alias}}( N, 0.0, x1, 2, y1, 1 ) + > {{alias}}( 3, 0.0, x1, 2, y1, 1 ) [ -2.0, 0.0, -1.0 ] > y0 [ 0.0, 0.0, 0.0, -2.0, 0.0, -1.0 ] + {{alias}}.ndarray( N, sum, x, strideX, offsetX, y, strideY, offsetY ) Computes the cumulative sum of double-precision floating-point strided array elements using ordinary recursive summation and alternative indexing @@ -113,8 +112,7 @@ // Advanced indexing: > x = new {{alias:@stdlib/array/float64}}( [ 1.0, -2.0, 3.0, 2.0, 5.0, -1.0 ] ); > y = new {{alias:@stdlib/array/float64}}( x.length ); - > var N = {{alias:@stdlib/math/base/special/floor}}( x.length / 2 ); - > {{alias}}.ndarray( N, 0.0, x, 2, 1, y, -1, y.length-1 ) + > {{alias}}.ndarray( 3, 0.0, x, 2, 1, y, -1, y.length-1 ) [ 0.0, 0.0, 0.0, -1.0, 0.0, -2.0 ] See Also diff --git a/lib/node_modules/@stdlib/blas/ext/base/dcusumors/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/dcusumors/examples/index.js index 3f3ed99b8a10..0e92da86a6cf 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dcusumors/examples/index.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dcusumors/examples/index.js @@ -18,20 +18,14 @@ 'use strict'; -var randu = require( '@stdlib/random/base/randu' ); -var round = require( '@stdlib/math/base/special/round' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var Float64Array = require( '@stdlib/array/float64' ); var dcusumors = require( './../lib' ); -var y; -var x; -var i; +var x = filledarrayBy( 10, 'float64', discreteUniform( 0, 100 ) ); +var y = new Float64Array( x.length ); -x = new Float64Array( 10 ); -y = new Float64Array( x.length ); -for ( i = 0; i < x.length; i++ ) { - x[ i ] = round( randu()*100.0 ); -} console.log( x ); console.log( y ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dcusumors/include.gypi b/lib/node_modules/@stdlib/blas/ext/base/dcusumors/include.gypi index 868c5c12e852..26476a8c2655 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dcusumors/include.gypi +++ b/lib/node_modules/@stdlib/blas/ext/base/dcusumors/include.gypi @@ -36,7 +36,7 @@ # Source files: 'src_files': [ - '<(src_dir)/addon.cpp', + '<(src_dir)/addon.c', '[ 1.0, -1.0, 1.0 ] */ function dcusumors( N, sum, x, strideX, y, strideY ) { diff --git a/lib/node_modules/@stdlib/blas/ext/base/dcusumors/lib/dcusumors.native.js b/lib/node_modules/@stdlib/blas/ext/base/dcusumors/lib/dcusumors.native.js index db8807d1be40..c311751b4e4b 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dcusumors/lib/dcusumors.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dcusumors/lib/dcusumors.native.js @@ -41,9 +41,8 @@ var addon = require( './../src/addon.node' ); * * var x = new Float64Array( [ 1.0, -2.0, 2.0 ] ); * var y = new Float64Array( x.length ); -* var N = x.length; * -* var v = dcusumors( N, 0.0, x, 1, y, 1 ); +* var v = dcusumors( 3, 0.0, x, 1, y, 1 ); * // returns [ 1.0, -1.0, 1.0 ] */ function dcusumors( N, sum, x, strideX, y, strideY ) { diff --git a/lib/node_modules/@stdlib/blas/ext/base/dcusumors/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/dcusumors/lib/index.js index 492a1b06527d..5a5eea526a6b 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dcusumors/lib/index.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dcusumors/lib/index.js @@ -29,21 +29,18 @@ * * var x = new Float64Array( [ 1.0, -2.0, 2.0 ] ); * var y = new Float64Array( x.length ); -* var N = x.length; * -* dcusumors( N, 0.0, x, 1, y, 1 ); +* dcusumors( 3, 0.0, x, 1, y, 1 ); * // y => [ 1.0, -1.0, 1.0 ] * * @example * var Float64Array = require( '@stdlib/array/float64' ); -* var floor = require( '@stdlib/math/base/special/floor' ); * var dcusumors = require( '@stdlib/blas/ext/base/dcusumors' ); * * var x = new Float64Array( [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0 ] ); * var y = new Float64Array( x.length ); -* var N = floor( x.length / 2 ); * -* dcusumors.ndarray( N, 0.0, x, 2, 1, y, 1, 0 ); +* dcusumors.ndarray( 4, 0.0, x, 2, 1, y, 1, 0 ); * // y => [ 1.0, -1.0, 1.0, 5.0, 0.0, 0.0, 0.0, 0.0 ] */ diff --git a/lib/node_modules/@stdlib/blas/ext/base/dcusumors/lib/ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/dcusumors/lib/ndarray.js index 35f63d2468d1..40f9e7ced10d 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dcusumors/lib/ndarray.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dcusumors/lib/ndarray.js @@ -35,13 +35,11 @@ * * @example * var Float64Array = require( '@stdlib/array/float64' ); -* var floor = require( '@stdlib/math/base/special/floor' ); * * var x = new Float64Array( [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0 ] ); * var y = new Float64Array( x.length ); -* var N = floor( x.length / 2 ); * -* var v = dcusumors( N, 0.0, x, 2, 1, y, 1, 0 ); +* var v = dcusumors( 4, 0.0, x, 2, 1, y, 1, 0 ); * // returns [ 1.0, -1.0, 1.0, 5.0, 0.0, 0.0, 0.0, 0.0 ] */ function dcusumors( N, sum, x, strideX, offsetX, y, strideY, offsetY ) { diff --git a/lib/node_modules/@stdlib/blas/ext/base/dcusumors/lib/ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/dcusumors/lib/ndarray.native.js index e23d51b824e7..6801b30868d3 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dcusumors/lib/ndarray.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dcusumors/lib/ndarray.native.js @@ -20,7 +20,8 @@ // MODULES // -var Float64Array = require( '@stdlib/array/float64' ); +var minViewBufferIndex = require( '@stdlib/strided/base/min-view-buffer-index' ); +var offsetView = require( '@stdlib/strided/base/offset-view' ); var addon = require( './dcusumors.native.js' ); @@ -41,26 +42,21 @@ var addon = require( './dcusumors.native.js' ); * * @example * var Float64Array = require( '@stdlib/array/float64' ); -* var floor = require( '@stdlib/math/base/special/floor' ); * * var x = new Float64Array( [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0 ] ); * var y = new Float64Array( x.length ); -* var N = floor( x.length / 2 ); * -* var v = dcusumors( N, 0.0, x, 2, 1, y, 1, 0 ); +* var v = dcusumors( 4, 0.0, x, 2, 1, y, 1, 0 ); * // returns [ 1.0, -1.0, 1.0, 5.0, 0.0, 0.0, 0.0, 0.0 ] */ function dcusumors( N, sum, x, strideX, offsetX, y, strideY, offsetY ) { var viewX; var viewY; - if ( strideX < 0 ) { - offsetX += (N-1) * strideX; - } - if ( strideY < 0 ) { - offsetY += (N-1) * strideY; - } - viewX = new Float64Array( x.buffer, x.byteOffset+(x.BYTES_PER_ELEMENT*offsetX), x.length-offsetX ); // eslint-disable-line max-len - viewY = new Float64Array( y.buffer, y.byteOffset+(y.BYTES_PER_ELEMENT*offsetY), y.length-offsetY ); // eslint-disable-line max-len + offsetX = minViewBufferIndex( N, strideX, offsetX ); + offsetY = minViewBufferIndex( N, strideY, offsetY ); + + viewX = offsetView( x, offsetX ); + viewY = offsetView( y, offsetY ); addon( N, sum, viewX, strideX, viewY, strideY ); return y; } diff --git a/lib/node_modules/@stdlib/blas/ext/base/dcusumors/manifest.json b/lib/node_modules/@stdlib/blas/ext/base/dcusumors/manifest.json index 96d5a0a2422c..3f41ea2d5973 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dcusumors/manifest.json +++ b/lib/node_modules/@stdlib/blas/ext/base/dcusumors/manifest.json @@ -1,40 +1,76 @@ { - "options": {}, - "fields": [ - { - "field": "src", - "resolve": true, - "relative": true - }, - { - "field": "include", - "resolve": true, - "relative": true - }, - { - "field": "libraries", - "resolve": false, - "relative": false - }, - { - "field": "libpath", - "resolve": true, - "relative": false - } - ], - "confs": [ - { - "src": [ - "./src/dcusumors.c" - ], - "include": [ - "./include" - ], - "libraries": [ - "-lm" - ], - "libpath": [], - "dependencies": [] - } - ] + "options": { + "task": "build" + }, + "fields": [ + { + "field": "src", + "resolve": true, + "relative": true + }, + { + "field": "include", + "resolve": true, + "relative": true + }, + { + "field": "libraries", + "resolve": false, + "relative": false + }, + { + "field": "libpath", + "resolve": true, + "relative": false + } + ], + "confs": [ + { + "task": "build", + "src": [ + "./src/dcusumors.c" + ], + "include": [ + "./include" + ], + "libraries": [ + "-lm" + ], + "libpath": [], + "dependencies": [ + "@stdlib/napi/argv", + "@stdlib/napi/argv-int64", + "@stdlib/napi/argv-strided-float64array", + "@stdlib/napi/export" + ] + }, + { + "task": "benchmark", + "src": [ + "./src/dcusumors.c" + ], + "include": [ + "./include" + ], + "libraries": [ + "-lm" + ], + "libpath": [], + "dependencies": [] + }, + { + "task": "examples", + "src": [ + "./src/dcusumors.c" + ], + "include": [ + "./include" + ], + "libraries": [ + "-lm" + ], + "libpath": [], + "dependencies": [] + } + ] } diff --git a/lib/node_modules/@stdlib/blas/ext/base/dcusumors/package.json b/lib/node_modules/@stdlib/blas/ext/base/dcusumors/package.json index aa74b866a816..7c8ac96c5d07 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dcusumors/package.json +++ b/lib/node_modules/@stdlib/blas/ext/base/dcusumors/package.json @@ -75,5 +75,7 @@ "double", "float64array" ], - "__stdlib__": {} + "__stdlib__": { + "wasm": false + } } diff --git a/lib/node_modules/@stdlib/blas/ext/base/dcusumors/src/addon.c b/lib/node_modules/@stdlib/blas/ext/base/dcusumors/src/addon.c new file mode 100644 index 000000000000..8d7cf76a15eb --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dcusumors/src/addon.c @@ -0,0 +1,46 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2020 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/blas/ext/base/dcusumors.h" +#include "stdlib/napi/argv.h" +#include "stdlib/napi/argv_int64.h" +#include "stdlib/napi/argv_strided_float64array.h" +#include "stdlib/napi/export.h" + +/** +* Receives JavaScript callback invocation data. +* +* @private +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 6 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_INT64( env, sum, argv, 1 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 3 ); + STDLIB_NAPI_ARGV_INT64( env, strideY, argv, 5 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT64ARRAY( env, X, N, strideX, argv, 2 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT64ARRAY( env, Y, N, strideY, argv, 4 ); + stdlib_strided_dcusumors( N, sum, X, strideX, Y, strideY ); + return NULL; +} + + // Register a Node-API module: +STDLIB_NAPI_MODULE_EXPORT_FCN( addon ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dcusumors/src/addon.cpp b/lib/node_modules/@stdlib/blas/ext/base/dcusumors/src/addon.cpp deleted file mode 100644 index e79d4d32b7a9..000000000000 --- a/lib/node_modules/@stdlib/blas/ext/base/dcusumors/src/addon.cpp +++ /dev/null @@ -1,164 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2020 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/blas/ext/base/dcusumors.h" -#include -#include -#include -#include -#include - -/** -* Add-on namespace. -*/ -namespace stdlib_blas_ext_base_dcusumors { - - /** - * Computes the cumulative sum of double-precision floating-point strided array elements using ordinary recursive summation. - * - * ## Notes - * - * - When called from JavaScript, the function expects six arguments: - * - * - `N`: number of indexed elements - * - `sum`: initial sum - * - `X`: input array - * - `strideX`: `X` stride length - * - `Y`: output array - * - `strideY`: `Y` stride length - */ - napi_value node_dcusumors( napi_env env, napi_callback_info info ) { - napi_status status; - - size_t argc = 6; - napi_value argv[ 6 ]; - status = napi_get_cb_info( env, info, &argc, argv, nullptr, nullptr ); - assert( status == napi_ok ); - - if ( argc < 6 ) { - napi_throw_error( env, nullptr, "invalid invocation. Must provide 6 arguments." ); - return nullptr; - } - - napi_valuetype vtype0; - status = napi_typeof( env, argv[ 0 ], &vtype0 ); - assert( status == napi_ok ); - if ( vtype0 != napi_number ) { - napi_throw_type_error( env, nullptr, "invalid argument. First argument must be a number." ); - return nullptr; - } - - napi_valuetype vtype1; - status = napi_typeof( env, argv[ 1 ], &vtype1 ); - assert( status == napi_ok ); - if ( vtype1 != napi_number ) { - napi_throw_type_error( env, nullptr, "invalid argument. Second argument must be a number." ); - return nullptr; - } - - bool res2; - status = napi_is_typedarray( env, argv[ 2 ], &res2 ); - assert( status == napi_ok ); - if ( res2 == false ) { - napi_throw_type_error( env, nullptr, "invalid argument. Third argument must be a Float64Array." ); - return nullptr; - } - - napi_valuetype vtype3; - status = napi_typeof( env, argv[ 3 ], &vtype3 ); - assert( status == napi_ok ); - if ( vtype3 != napi_number ) { - napi_throw_type_error( env, nullptr, "invalid argument. Fourth argument must be a number." ); - return nullptr; - } - - bool res4; - status = napi_is_typedarray( env, argv[ 4 ], &res4 ); - assert( status == napi_ok ); - if ( res4 == false ) { - napi_throw_type_error( env, nullptr, "invalid argument. Fifth argument must be a Float64Array." ); - return nullptr; - } - - napi_valuetype vtype5; - status = napi_typeof( env, argv[ 5 ], &vtype5 ); - assert( status == napi_ok ); - if ( vtype5 != napi_number ) { - napi_throw_type_error( env, nullptr, "invalid argument. Sixth argument must be a number." ); - return nullptr; - } - - int64_t N; - status = napi_get_value_int64( env, argv[ 0 ], &N ); - assert( status == napi_ok ); - - double sum; - status = napi_get_value_double( env, argv[ 1 ], &sum ); - assert( status == napi_ok ); - - int64_t strideX; - status = napi_get_value_int64( env, argv[ 3 ], &strideX ); - assert( status == napi_ok ); - - int64_t strideY; - status = napi_get_value_int64( env, argv[ 5 ], &strideY ); - assert( status == napi_ok ); - - napi_typedarray_type vtype2; - size_t xlen; - void *X; - status = napi_get_typedarray_info( env, argv[ 2 ], &vtype2, &xlen, &X, nullptr, nullptr ); - assert( status == napi_ok ); - if ( vtype2 != napi_float64_array ) { - napi_throw_type_error( env, nullptr, "invalid argument. Third argument must be a Float64Array." ); - return nullptr; - } - if ( (N-1)*llabs(strideX) >= (int64_t)xlen ) { - napi_throw_range_error( env, nullptr, "invalid argument. Third argument has insufficient elements based on the associated stride and the number of indexed elements." ); - return nullptr; - } - - napi_typedarray_type vtype4; - size_t ylen; - void *Y; - status = napi_get_typedarray_info( env, argv[ 4 ], &vtype4, &ylen, &Y, nullptr, nullptr ); - assert( status == napi_ok ); - if ( vtype4 != napi_float64_array ) { - napi_throw_type_error( env, nullptr, "invalid argument. Fifth argument must be a Float64Array." ); - return nullptr; - } - if ( (N-1)*llabs(strideY) >= (int64_t)ylen ) { - napi_throw_range_error( env, nullptr, "invalid argument. Fifth argument has insufficient elements based on the associated stride and the number of indexed elements." ); - return nullptr; - } - - stdlib_strided_dcusumors( N, sum, (double *)X, strideX, (double *)Y, strideY ); - - return nullptr; - } - - napi_value Init( napi_env env, napi_value exports ) { - napi_status status; - napi_value fcn; - status = napi_create_function( env, "exports", NAPI_AUTO_LENGTH, node_dcusumors, NULL, &fcn ); - assert( status == napi_ok ); - return fcn; - } - - NAPI_MODULE( NODE_GYP_MODULE_NAME, Init ) -} // end namespace stdlib_blas_ext_base_dcusumors diff --git a/lib/node_modules/@stdlib/blas/ext/base/dcusumors/test/test.dcusumors.js b/lib/node_modules/@stdlib/blas/ext/base/dcusumors/test/test.dcusumors.js index 70c6cf2b2eb1..3a3044c9c833 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dcusumors/test/test.dcusumors.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dcusumors/test/test.dcusumors.js @@ -21,7 +21,6 @@ // MODULES // var tape = require( 'tape' ); -var floor = require( '@stdlib/math/base/special/floor' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var Float64Array = require( '@stdlib/array/float64' ); var dcusumors = require( './../lib/dcusumors.js' ); @@ -36,7 +35,7 @@ tape( 'main export is a function', function test( t ) { }); tape( 'the function has an arity of 6', function test( t ) { - t.strictEqual( dcusumors.length, 6, 'has expected arity' ); + t.strictEqual( dcusumors.length, 6, 'returns expected value' ); t.end(); }); @@ -164,7 +163,6 @@ tape( 'the function supports an `x` stride', function test( t ) { var expected; var x; var y; - var N; x = new Float64Array([ 1.0, // 0 @@ -180,9 +178,8 @@ tape( 'the function supports an `x` stride', function test( t ) { 0.0, 0.0 ]); - N = 3; - dcusumors( N, 0.0, x, 2, y, 1 ); + dcusumors( 3, 0.0, x, 2, y, 1 ); expected = new Float64Array( [ 1.0, 4.0, 9.0, 0.0, 0.0 ] ); @@ -194,7 +191,6 @@ tape( 'the function supports a `y` stride', function test( t ) { var expected; var x; var y; - var N; x = new Float64Array([ 1.0, // 0 @@ -210,9 +206,8 @@ tape( 'the function supports a `y` stride', function test( t ) { 0.0, 0.0 // 2 ]); - N = 3; - dcusumors( N, 0.0, x, 1, y, 2 ); + dcusumors( 3, 0.0, x, 1, y, 2 ); expected = new Float64Array( [ 1.0, 0.0, 3.0, 0.0, 6.0 ] ); @@ -224,7 +219,6 @@ tape( 'the function supports negative strides', function test( t ) { var expected; var x; var y; - var N; var i; x = new Float64Array([ @@ -241,9 +235,8 @@ tape( 'the function supports negative strides', function test( t ) { 0.0, 0.0 ]); - N = 3; - dcusumors( N, 0.0, x, -2, y, -1 ); + dcusumors( 3, 0.0, x, -2, y, -1 ); expected = new Float64Array( [ 9.0, 8.0, 5.0, 0.0, 0.0 ] ); t.deepEqual( y, expected, 'returns expected value' ); @@ -270,7 +263,6 @@ tape( 'the function supports complex access patterns', function test( t ) { var expected; var x; var y; - var N; x = new Float64Array([ 1.0, // 0 @@ -288,9 +280,8 @@ tape( 'the function supports complex access patterns', function test( t ) { 0.0, 0.0 ]); - N = 3; - dcusumors( N, 0.0, x, 2, y, -1 ); + dcusumors( 3, 0.0, x, 2, y, -1 ); expected = new Float64Array( [ 9.0, 4.0, 1.0, 0.0, 0.0, 0.0 ] ); @@ -304,7 +295,6 @@ tape( 'the function supports view offsets', function test( t ) { var y0; var x1; var y1; - var N; // Initial arrays... x0 = new Float64Array([ @@ -328,9 +318,7 @@ tape( 'the function supports view offsets', function test( t ) { x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // begin at 2nd element y1 = new Float64Array( y0.buffer, y0.BYTES_PER_ELEMENT*3 ); // begin at the 4th element - N = floor( x0.length / 2 ); - - dcusumors( N, 0.0, x1, -2, y1, 1 ); + dcusumors( 3, 0.0, x1, -2, y1, 1 ); expected = new Float64Array( [ 0.0, 0.0, 0.0, 6.0, 10.0, 12.0 ] ); t.deepEqual( y0, expected, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dcusumors/test/test.dcusumors.native.js b/lib/node_modules/@stdlib/blas/ext/base/dcusumors/test/test.dcusumors.native.js index e0c43e44557d..39ee8b3972cf 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dcusumors/test/test.dcusumors.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dcusumors/test/test.dcusumors.native.js @@ -22,7 +22,6 @@ var resolve = require( 'path' ).resolve; var tape = require( 'tape' ); -var floor = require( '@stdlib/math/base/special/floor' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var Float64Array = require( '@stdlib/array/float64' ); var tryRequire = require( '@stdlib/utils/try-require' ); @@ -45,7 +44,7 @@ tape( 'main export is a function', opts, function test( t ) { }); tape( 'the function has an arity of 6', opts, function test( t ) { - t.strictEqual( dcusumors.length, 6, 'has expected arity' ); + t.strictEqual( dcusumors.length, 6, 'returns expected value' ); t.end(); }); @@ -173,7 +172,6 @@ tape( 'the function supports an `x` stride', opts, function test( t ) { var expected; var x; var y; - var N; x = new Float64Array([ 1.0, // 0 @@ -189,9 +187,8 @@ tape( 'the function supports an `x` stride', opts, function test( t ) { 0.0, 0.0 ]); - N = 3; - dcusumors( N, 0.0, x, 2, y, 1 ); + dcusumors( 3, 0.0, x, 2, y, 1 ); expected = new Float64Array( [ 1.0, 4.0, 9.0, 0.0, 0.0 ] ); @@ -203,7 +200,6 @@ tape( 'the function supports a `y` stride', opts, function test( t ) { var expected; var x; var y; - var N; x = new Float64Array([ 1.0, // 0 @@ -219,9 +215,8 @@ tape( 'the function supports a `y` stride', opts, function test( t ) { 0.0, 0.0 // 2 ]); - N = 3; - dcusumors( N, 0.0, x, 1, y, 2 ); + dcusumors( 3, 0.0, x, 1, y, 2 ); expected = new Float64Array( [ 1.0, 0.0, 3.0, 0.0, 6.0 ] ); @@ -233,7 +228,6 @@ tape( 'the function supports negative strides', opts, function test( t ) { var expected; var x; var y; - var N; var i; x = new Float64Array([ @@ -250,9 +244,8 @@ tape( 'the function supports negative strides', opts, function test( t ) { 0.0, 0.0 ]); - N = 3; - dcusumors( N, 0.0, x, -2, y, -1 ); + dcusumors( 3, 0.0, x, -2, y, -1 ); expected = new Float64Array( [ 9.0, 8.0, 5.0, 0.0, 0.0 ] ); t.deepEqual( y, expected, 'returns expected value' ); @@ -279,7 +272,6 @@ tape( 'the function supports complex access patterns', opts, function test( t ) var expected; var x; var y; - var N; x = new Float64Array([ 1.0, // 0 @@ -297,9 +289,8 @@ tape( 'the function supports complex access patterns', opts, function test( t ) 0.0, 0.0 ]); - N = 3; - dcusumors( N, 0.0, x, 2, y, -1 ); + dcusumors( 3, 0.0, x, 2, y, -1 ); expected = new Float64Array( [ 9.0, 4.0, 1.0, 0.0, 0.0, 0.0 ] ); @@ -313,7 +304,6 @@ tape( 'the function supports view offsets', opts, function test( t ) { var y0; var x1; var y1; - var N; // Initial arrays... x0 = new Float64Array([ @@ -337,9 +327,7 @@ tape( 'the function supports view offsets', opts, function test( t ) { x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // begin at 2nd element y1 = new Float64Array( y0.buffer, y0.BYTES_PER_ELEMENT*3 ); // begin at the 4th element - N = floor( x0.length / 2 ); - - dcusumors( N, 0.0, x1, -2, y1, 1 ); + dcusumors( 3, 0.0, x1, -2, y1, 1 ); expected = new Float64Array( [ 0.0, 0.0, 0.0, 6.0, 10.0, 12.0 ] ); t.deepEqual( y0, expected, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dcusumors/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/dcusumors/test/test.ndarray.js index e4f5f21c574b..e9dd9d7d8117 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dcusumors/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dcusumors/test/test.ndarray.js @@ -21,7 +21,6 @@ // MODULES // var tape = require( 'tape' ); -var floor = require( '@stdlib/math/base/special/floor' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var Float64Array = require( '@stdlib/array/float64' ); var dcusumors = require( './../lib/ndarray.js' ); @@ -36,7 +35,7 @@ tape( 'main export is a function', function test( t ) { }); tape( 'the function has an arity of 8', function test( t ) { - t.strictEqual( dcusumors.length, 8, 'has expected arity' ); + t.strictEqual( dcusumors.length, 8, 'returns expected value' ); t.end(); }); @@ -164,7 +163,6 @@ tape( 'the function supports an `x` stride', function test( t ) { var expected; var x; var y; - var N; x = new Float64Array([ 1.0, // 0 @@ -180,9 +178,8 @@ tape( 'the function supports an `x` stride', function test( t ) { 0.0, 0.0 ]); - N = 3; - dcusumors( N, 0.0, x, 2, 0, y, 1, 0 ); + dcusumors( 3, 0.0, x, 2, 0, y, 1, 0 ); expected = new Float64Array( [ 1.0, 4.0, 9.0, 0.0, 0.0 ] ); @@ -194,7 +191,6 @@ tape( 'the function supports a `y` stride', function test( t ) { var expected; var x; var y; - var N; x = new Float64Array([ 1.0, // 0 @@ -210,9 +206,8 @@ tape( 'the function supports a `y` stride', function test( t ) { 0.0, 0.0 // 2 ]); - N = 3; - dcusumors( N, 0.0, x, 1, 0, y, 2, 0 ); + dcusumors( 3, 0.0, x, 1, 0, y, 2, 0 ); expected = new Float64Array( [ 1.0, 0.0, 3.0, 0.0, 6.0 ] ); @@ -224,7 +219,6 @@ tape( 'the function supports negative strides', function test( t ) { var expected; var x; var y; - var N; var i; x = new Float64Array([ @@ -241,9 +235,8 @@ tape( 'the function supports negative strides', function test( t ) { 0.0, 0.0 ]); - N = 3; - dcusumors( N, 0.0, x, -2, x.length-1, y, -1, 2 ); + dcusumors( 3, 0.0, x, -2, x.length-1, y, -1, 2 ); expected = new Float64Array( [ 9.0, 8.0, 5.0, 0.0, 0.0 ] ); t.deepEqual( y, expected, 'returns expected value' ); @@ -268,7 +261,6 @@ tape( 'the function supports negative strides', function test( t ) { tape( 'the function supports an `x` offset', function test( t ) { var expected; - var N; var x; var y; @@ -292,9 +284,8 @@ tape( 'the function supports an `x` offset', function test( t ) { 0.0, 0.0 ]); - N = floor( x.length / 2 ); - dcusumors( N, 0.0, x, 2, 1, y, 1, 0 ); + dcusumors( 4, 0.0, x, 2, 1, y, 1, 0 ); expected = new Float64Array( [ 1.0, -1.0, 1.0, 5.0, 0.0, 0.0, 0.0, 0.0 ] ); @@ -304,7 +295,6 @@ tape( 'the function supports an `x` offset', function test( t ) { tape( 'the function supports a `y` offset', function test( t ) { var expected; - var N; var x; var y; @@ -328,9 +318,8 @@ tape( 'the function supports a `y` offset', function test( t ) { 0.0, 0.0 // 3 ]); - N = floor( x.length / 2 ); - dcusumors( N, 0.0, x, 1, 0, y, 2, 1 ); + dcusumors( 4, 0.0, x, 1, 0, y, 2, 1 ); expected = new Float64Array( [ 0.0, 2.0, 0.0, 3.0, 0.0, 5.0, 0.0, 3.0 ] ); @@ -342,7 +331,6 @@ tape( 'the function supports complex access patterns', function test( t ) { var expected; var x; var y; - var N; x = new Float64Array([ 1.0, // 0 @@ -360,9 +348,8 @@ tape( 'the function supports complex access patterns', function test( t ) { 0.0, 0.0 ]); - N = 3; - dcusumors( N, 0.0, x, 2, 0, y, -1, 2 ); + dcusumors( 3, 0.0, x, 2, 0, y, -1, 2 ); expected = new Float64Array( [ 9.0, 4.0, 1.0, 0.0, 0.0, 0.0 ] ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dcusumors/test/test.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/dcusumors/test/test.ndarray.native.js index 7afae945dece..7611606a7db5 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dcusumors/test/test.ndarray.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dcusumors/test/test.ndarray.native.js @@ -22,7 +22,6 @@ var resolve = require( 'path' ).resolve; var tape = require( 'tape' ); -var floor = require( '@stdlib/math/base/special/floor' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var Float64Array = require( '@stdlib/array/float64' ); var tryRequire = require( '@stdlib/utils/try-require' ); @@ -45,7 +44,7 @@ tape( 'main export is a function', opts, function test( t ) { }); tape( 'the function has an arity of 8', opts, function test( t ) { - t.strictEqual( dcusumors.length, 8, 'has expected arity' ); + t.strictEqual( dcusumors.length, 8, 'returns expected value' ); t.end(); }); @@ -173,7 +172,6 @@ tape( 'the function supports an `x` stride', opts, function test( t ) { var expected; var x; var y; - var N; x = new Float64Array([ 1.0, // 0 @@ -189,9 +187,8 @@ tape( 'the function supports an `x` stride', opts, function test( t ) { 0.0, 0.0 ]); - N = 3; - dcusumors( N, 0.0, x, 2, 0, y, 1, 0 ); + dcusumors( 3, 0.0, x, 2, 0, y, 1, 0 ); expected = new Float64Array( [ 1.0, 4.0, 9.0, 0.0, 0.0 ] ); @@ -203,7 +200,6 @@ tape( 'the function supports a `y` stride', opts, function test( t ) { var expected; var x; var y; - var N; x = new Float64Array([ 1.0, // 0 @@ -219,9 +215,8 @@ tape( 'the function supports a `y` stride', opts, function test( t ) { 0.0, 0.0 // 2 ]); - N = 3; - dcusumors( N, 0.0, x, 1, 0, y, 2, 0 ); + dcusumors( 3, 0.0, x, 1, 0, y, 2, 0 ); expected = new Float64Array( [ 1.0, 0.0, 3.0, 0.0, 6.0 ] ); @@ -233,7 +228,6 @@ tape( 'the function supports negative strides', opts, function test( t ) { var expected; var x; var y; - var N; var i; x = new Float64Array([ @@ -250,9 +244,8 @@ tape( 'the function supports negative strides', opts, function test( t ) { 0.0, 0.0 ]); - N = 3; - dcusumors( N, 0.0, x, -2, x.length-1, y, -1, 2 ); + dcusumors( 3, 0.0, x, -2, x.length-1, y, -1, 2 ); expected = new Float64Array( [ 9.0, 8.0, 5.0, 0.0, 0.0 ] ); t.deepEqual( y, expected, 'returns expected value' ); @@ -277,7 +270,6 @@ tape( 'the function supports negative strides', opts, function test( t ) { tape( 'the function supports an `x` offset', opts, function test( t ) { var expected; - var N; var x; var y; @@ -301,9 +293,8 @@ tape( 'the function supports an `x` offset', opts, function test( t ) { 0.0, 0.0 ]); - N = floor( x.length / 2 ); - dcusumors( N, 0.0, x, 2, 1, y, 1, 0 ); + dcusumors( 4, 0.0, x, 2, 1, y, 1, 0 ); expected = new Float64Array( [ 1.0, -1.0, 1.0, 5.0, 0.0, 0.0, 0.0, 0.0 ] ); @@ -313,7 +304,6 @@ tape( 'the function supports an `x` offset', opts, function test( t ) { tape( 'the function supports a `y` offset', opts, function test( t ) { var expected; - var N; var x; var y; @@ -337,9 +327,8 @@ tape( 'the function supports a `y` offset', opts, function test( t ) { 0.0, 0.0 // 3 ]); - N = floor( x.length / 2 ); - dcusumors( N, 0.0, x, 1, 0, y, 2, 1 ); + dcusumors( 4, 0.0, x, 1, 0, y, 2, 1 ); expected = new Float64Array( [ 0.0, 2.0, 0.0, 3.0, 0.0, 5.0, 0.0, 3.0 ] ); @@ -351,7 +340,6 @@ tape( 'the function supports complex access patterns', opts, function test( t ) var expected; var x; var y; - var N; x = new Float64Array([ 1.0, // 0 @@ -369,9 +357,8 @@ tape( 'the function supports complex access patterns', opts, function test( t ) 0.0, 0.0 ]); - N = 3; - dcusumors( N, 0.0, x, 2, 0, y, -1, 2 ); + dcusumors( 3, 0.0, x, 2, 0, y, -1, 2 ); expected = new Float64Array( [ 9.0, 4.0, 1.0, 0.0, 0.0, 0.0 ] ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/README.md b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/README.md index 7974e055966d..63b09df931e8 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/README.md +++ b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/README.md @@ -44,9 +44,8 @@ Computes the sum of double-precision floating-point strided array elements, igno var Float64Array = require( '@stdlib/array/float64' ); var x = new Float64Array( [ 1.0, -2.0, NaN, 2.0 ] ); -var N = x.length; -var v = dnansumkbn( N, x, 1 ); +var v = dnansumkbn( 4, x, 1 ); // returns 1.0 ``` @@ -56,16 +55,14 @@ The function has the following parameters: - **x**: input [`Float64Array`][@stdlib/array/float64]. - **stride**: index increment for `x`. -The `N` and `stride` parameters determine which elements in `x` are accessed at runtime. For example, to compute the sum of every other element in `x`, +The `N` and stride parameters determine which elements in the strided arrays are accessed at runtime. For example, to compute the sum of every other element in `x`, ```javascript var Float64Array = require( '@stdlib/array/float64' ); -var floor = require( '@stdlib/math/base/special/floor' ); var x = new Float64Array( [ 1.0, 2.0, NaN, -7.0, NaN, 3.0, 4.0, 2.0 ] ); -var N = floor( x.length / 2 ); -var v = dnansumkbn( N, x, 2 ); +var v = dnansumkbn( 4, x, 2 ); // returns 5.0 ``` @@ -75,14 +72,11 @@ Note that indexing is relative to the first index. To introduce an offset, use [ ```javascript var Float64Array = require( '@stdlib/array/float64' ); -var floor = require( '@stdlib/math/base/special/floor' ); var x0 = new Float64Array( [ 2.0, 1.0, NaN, -2.0, -2.0, 2.0, 3.0, 4.0 ] ); var x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element -var N = floor( x0.length / 2 ); - -var v = dnansumkbn( N, x1, 2 ); +var v = dnansumkbn( 4, x1, 2 ); // returns 5.0 ``` @@ -94,9 +88,8 @@ Computes the sum of double-precision floating-point strided array elements, igno var Float64Array = require( '@stdlib/array/float64' ); var x = new Float64Array( [ 1.0, -2.0, NaN, 2.0 ] ); -var N = x.length; -var v = dnansumkbn.ndarray( N, x, 1, 0 ); +var v = dnansumkbn.ndarray( 4, x, 1, 0 ); // returns 1.0 ``` @@ -108,12 +101,10 @@ While [`typed array`][mdn-typed-array] views mandate a view offset based on the ```javascript var Float64Array = require( '@stdlib/array/float64' ); -var floor = require( '@stdlib/math/base/special/floor' ); var x = new Float64Array( [ 2.0, 1.0, NaN, -2.0, -2.0, 2.0, 3.0, 4.0 ] ); -var N = floor( x.length / 2 ); -var v = dnansumkbn.ndarray( N, x, 2, 1 ); +var v = dnansumkbn.ndarray( 4, x, 2, 1 ); // returns 5.0 ``` @@ -138,22 +129,11 @@ var v = dnansumkbn.ndarray( N, x, 2, 1 ); ```javascript -var randu = require( '@stdlib/random/base/randu' ); -var round = require( '@stdlib/math/base/special/round' ); -var Float64Array = require( '@stdlib/array/float64' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var dnansumkbn = require( '@stdlib/blas/ext/base/dnansumkbn' ); -var x; -var i; - -x = new Float64Array( 10 ); -for ( i = 0; i < x.length; i++ ) { - if ( randu() < 0.2 ) { - x[ i ] = NaN; - } else { - x[ i ] = round( randu()*100.0 ); - } -} +var x = filledarrayBy( 10, 'float64', discreteUniform( 0, 100 ) ); console.log( x ); var v = dnansumkbn( x.length, x, 1 ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/benchmark/benchmark.js index 1cdaac1180e0..247eecd0d24a 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/benchmark/benchmark.js @@ -21,14 +21,19 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/base/uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); -var Float64Array = require( '@stdlib/array/float64' ); var pkg = require( './../package.json' ).name; var dnansumkbn = require( './../lib/dnansumkbn.js' ); +// VARIABLES // + +var rand = uniform( -10.0, 10.0 ); + + // FUNCTIONS // /** @@ -39,17 +44,7 @@ var dnansumkbn = require( './../lib/dnansumkbn.js' ); * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x; - var i; - - x = new Float64Array( len ); - for ( i = 0; i < x.length; i++ ) { - if ( randu() < 0.2 ) { - x[ i ] = NaN; - } else { - x[ i ] = ( randu()*10.0 ) - 20.0; - } - } + var x = filledarrayBy( len, 'float64', rand ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/benchmark/benchmark.native.js index d76e542e67dc..9cb69fa5e6d7 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/benchmark/benchmark.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/benchmark/benchmark.native.js @@ -22,10 +22,10 @@ var resolve = require( 'path' ).resolve; var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/base/uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); -var Float64Array = require( '@stdlib/array/float64' ); var tryRequire = require( '@stdlib/utils/try-require' ); var pkg = require( './../package.json' ).name; @@ -36,6 +36,7 @@ var dnansumkbn = tryRequire( resolve( __dirname, './../lib/dnansumkbn.native.js' var opts = { 'skip': ( dnansumkbn instanceof Error ) }; +var rand = uniform( -10.0, 10.0 ); // FUNCTIONS // @@ -48,17 +49,7 @@ var opts = { * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x; - var i; - - x = new Float64Array( len ); - for ( i = 0; i < x.length; i++ ) { - if ( randu() < 0.2 ) { - x[ i ] = NaN; - } else { - x[ i ] = ( randu()*10.0 ) - 20.0; - } - } + var x = filledarrayBy( len, 'float64', rand ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/benchmark/benchmark.ndarray.js index 8367003af555..99fc95353703 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/benchmark/benchmark.ndarray.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/benchmark/benchmark.ndarray.js @@ -21,14 +21,19 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/base/uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); -var Float64Array = require( '@stdlib/array/float64' ); var pkg = require( './../package.json' ).name; var dnansumkbn = require( './../lib/ndarray.js' ); +// VARIABLES // + +var rand = uniform( -10.0, 10.0 ); + + // FUNCTIONS // /** @@ -39,17 +44,7 @@ var dnansumkbn = require( './../lib/ndarray.js' ); * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x; - var i; - - x = new Float64Array( len ); - for ( i = 0; i < x.length; i++ ) { - if ( randu() < 0.2 ) { - x[ i ] = NaN; - } else { - x[ i ] = ( randu()*10.0 ) - 20.0; - } - } + var x = filledarrayBy( len, 'float64', rand ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/benchmark/benchmark.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/benchmark/benchmark.ndarray.native.js index e045b70c8e38..00d18e317a2f 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/benchmark/benchmark.ndarray.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/benchmark/benchmark.ndarray.native.js @@ -22,10 +22,10 @@ var resolve = require( 'path' ).resolve; var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/base/uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); -var Float64Array = require( '@stdlib/array/float64' ); var tryRequire = require( '@stdlib/utils/try-require' ); var pkg = require( './../package.json' ).name; @@ -36,6 +36,7 @@ var dnansumkbn = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) var opts = { 'skip': ( dnansumkbn instanceof Error ) }; +var rand = uniform( -10.0, 10.0 ); // FUNCTIONS // @@ -48,17 +49,7 @@ var opts = { * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x; - var i; - - x = new Float64Array( len ); - for ( i = 0; i < x.length; i++ ) { - if ( randu() < 0.2 ) { - x[ i ] = NaN; - } else { - x[ i ] = ( randu()*10.0 ) - 20.0; - } - } + var x = filledarrayBy( len, 'float64', rand ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/docs/repl.txt index 30adcead7b98..a396def0a9c4 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/docs/repl.txt +++ b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/docs/repl.txt @@ -3,8 +3,8 @@ Computes the sum of double-precision floating-point strided array elements, ignoring `NaN` values and using an improved Kahan–Babuška algorithm. - The `N` and `stride` parameters determine which elements in `x` are accessed - at runtime. + The `N` and stride parameters determine which elements in the strided + array are accessed at runtime. Indexing is relative to the first index. To introduce an offset, use a typed array view. @@ -36,19 +36,16 @@ // Using `N` and `stride` parameters: > x = new {{alias:@stdlib/array/float64}}( [ -2.0, 1.0, 1.0, -5.0, 2.0, -1.0, NaN, NaN ] ); - > var N = {{alias:@stdlib/math/base/special/floor}}( x.length / 2 ); - > var stride = 2; - > {{alias}}( N, x, stride ) + > {{alias}}( 4, x, 2 ) 1.0 // Using view offsets: > var x0 = new {{alias:@stdlib/array/float64}}( [ 1.0, -2.0, 3.0, 2.0, 5.0, -1.0, NaN, NaN ] ); > var x1 = new {{alias:@stdlib/array/float64}}( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); - > N = {{alias:@stdlib/math/base/special/floor}}( x0.length / 2 ); - > stride = 2; - > {{alias}}( N, x1, stride ) + > {{alias}}( 4, x1, 2 ) -1.0 + {{alias}}.ndarray( N, x, stride, offset ) Computes the sum of double-precision floating-point strided array elements, ignoring `NaN` values and using an improved Kahan–Babuška algorithm and @@ -86,8 +83,7 @@ // Using offset parameter: > var x = new {{alias:@stdlib/array/float64}}( [ 1.0, -2.0, 3.0, 2.0, 5.0, -1.0, NaN, NaN ] ); - > var N = {{alias:@stdlib/math/base/special/floor}}( x.length / 2 ); - > {{alias}}.ndarray( N, x, 2, 1 ) + > {{alias}}.ndarray( 4, x, 2, 1 ) -1.0 See Also diff --git a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/examples/index.js index 618d671558f5..14fda9a5593d 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/examples/index.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/examples/index.js @@ -18,22 +18,11 @@ 'use strict'; -var randu = require( '@stdlib/random/base/randu' ); -var round = require( '@stdlib/math/base/special/round' ); -var Float64Array = require( '@stdlib/array/float64' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var dnansumkbn = require( './../lib' ); -var x; -var i; - -x = new Float64Array( 10 ); -for ( i = 0; i < x.length; i++ ) { - if ( randu() < 0.2 ) { - x[ i ] = NaN; - } else { - x[ i ] = round( randu()*100.0 ); - } -} +var x = filledarrayBy( 10, 'float64', discreteUniform( 0.0, 100.0 ) ); console.log( x ); var v = dnansumkbn( x.length, x, 1 ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/include.gypi b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/include.gypi index 868c5c12e852..26476a8c2655 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/include.gypi +++ b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/include.gypi @@ -36,7 +36,7 @@ # Source files: 'src_files': [ - '<(src_dir)/addon.cpp', + '<(src_dir)/addon.c', ' +#include + +/** +* Receives JavaScript callback invocation data. +* +* @private +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 3 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_INT64( env, stride, argv, 2 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT64ARRAY( env, X, N, stride, argv, 1 ); + + napi_value v; + napi_status status = napi_create_double( env, stdlib_strided_dnansumkbn( N, X, stride ), &v ); + assert( status == napi_ok ); + + return v; +} + +STDLIB_NAPI_MODULE_EXPORT_FCN( addon ) diff --git a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/src/addon.cpp b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/src/addon.cpp deleted file mode 100644 index 59f2bed05569..000000000000 --- a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/src/addon.cpp +++ /dev/null @@ -1,117 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2020 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/blas/ext/base/dnansumkbn.h" -#include -#include -#include -#include -#include - -/** -* Add-on namespace. -*/ -namespace stdlib_blas_ext_base_dnansumkbn { - - /** - * Computes the sum of double-precision floating-point strided array elements, ignoring `NaN` values and using an improved Kahan–Babuška algorithm. - * - * ## Notes - * - * - When called from JavaScript, the function expects three arguments: - * - * - `N`: number of indexed elements - * - `X`: input array - * - `stride`: stride length - */ - napi_value node_dnansumkbn( napi_env env, napi_callback_info info ) { - napi_status status; - - size_t argc = 3; - napi_value argv[ 3 ]; - status = napi_get_cb_info( env, info, &argc, argv, nullptr, nullptr ); - assert( status == napi_ok ); - - if ( argc < 3 ) { - napi_throw_error( env, nullptr, "invalid invocation. Must provide 3 arguments." ); - return nullptr; - } - - napi_valuetype vtype0; - status = napi_typeof( env, argv[ 0 ], &vtype0 ); - assert( status == napi_ok ); - if ( vtype0 != napi_number ) { - napi_throw_type_error( env, nullptr, "invalid argument. First argument must be a number." ); - return nullptr; - } - - bool res; - status = napi_is_typedarray( env, argv[ 1 ], &res ); - assert( status == napi_ok ); - if ( res == false ) { - napi_throw_type_error( env, nullptr, "invalid argument. Second argument must be a Float64Array." ); - return nullptr; - } - - napi_valuetype vtype2; - status = napi_typeof( env, argv[ 2 ], &vtype2 ); - assert( status == napi_ok ); - if ( vtype2 != napi_number ) { - napi_throw_type_error( env, nullptr, "invalid argument. Third argument must be a number." ); - return nullptr; - } - - int64_t N; - status = napi_get_value_int64( env, argv[ 0 ], &N ); - assert( status == napi_ok ); - - int64_t stride; - status = napi_get_value_int64( env, argv[ 2 ], &stride ); - assert( status == napi_ok ); - - napi_typedarray_type vtype1; - size_t xlen; - void *X; - status = napi_get_typedarray_info( env, argv[ 1 ], &vtype1, &xlen, &X, nullptr, nullptr ); - assert( status == napi_ok ); - if ( vtype1 != napi_float64_array ) { - napi_throw_type_error( env, nullptr, "invalid argument. Second argument must be a Float64Array." ); - return nullptr; - } - if ( (N-1)*llabs(stride) >= (int64_t)xlen ) { - napi_throw_range_error( env, nullptr, "invalid argument. Second argument has insufficient elements based on the associated stride and the number of indexed elements." ); - return nullptr; - } - - napi_value v; - status = napi_create_double( env, stdlib_strided_dnansumkbn( N, (double *)X, stride ), &v ); - assert( status == napi_ok ); - - return v; - } - - napi_value Init( napi_env env, napi_value exports ) { - napi_status status; - napi_value fcn; - status = napi_create_function( env, "exports", NAPI_AUTO_LENGTH, node_dnansumkbn, NULL, &fcn ); - assert( status == napi_ok ); - return fcn; - } - - NAPI_MODULE( NODE_GYP_MODULE_NAME, Init ) -} // end namespace stdlib_blas_ext_base_dnansumkbn diff --git a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/test/test.dnansumkbn.js b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/test/test.dnansumkbn.js index 763ba06b4df0..e538d9c967ce 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/test/test.dnansumkbn.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/test/test.dnansumkbn.js @@ -21,7 +21,6 @@ // MODULES // var tape = require( 'tape' ); -var floor = require( '@stdlib/math/base/special/floor' ); var Float64Array = require( '@stdlib/array/float64' ); var dnansumkbn = require( './../lib/dnansumkbn.js' ); @@ -35,7 +34,7 @@ tape( 'main export is a function', function test( t ) { }); tape( 'the function has an arity of 3', function test( t ) { - t.strictEqual( dnansumkbn.length, 3, 'has expected arity' ); + t.strictEqual( dnansumkbn.length, 3, 'returns expected value' ); t.end(); }); @@ -106,7 +105,6 @@ tape( 'if provided an `N` parameter equal to `1`, the function returns the first }); tape( 'the function supports a `stride` parameter', function test( t ) { - var N; var x; var v; @@ -123,15 +121,13 @@ tape( 'the function supports a `stride` parameter', function test( t ) { NaN ]); - N = floor( x.length / 2 ); - v = dnansumkbn( N, x, 2 ); + v = dnansumkbn( 5, x, 2 ); t.strictEqual( v, 5.0, 'returns expected value' ); t.end(); }); tape( 'the function supports a negative `stride` parameter', function test( t ) { - var N; var x; var v; @@ -148,8 +144,7 @@ tape( 'the function supports a negative `stride` parameter', function test( t ) 2.0 ]); - N = floor( x.length / 2 ); - v = dnansumkbn( N, x, -2 ); + v = dnansumkbn( 5, x, -2 ); t.strictEqual( v, 5.0, 'returns expected value' ); t.end(); @@ -170,7 +165,6 @@ tape( 'if provided a `stride` parameter equal to `0`, the function returns the f tape( 'the function supports view offsets', function test( t ) { var x0; var x1; - var N; var v; x0 = new Float64Array([ @@ -188,9 +182,8 @@ tape( 'the function supports view offsets', function test( t ) { ]); x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element - N = floor(x1.length / 2); - v = dnansumkbn( N, x1, 2 ); + v = dnansumkbn( 5, x1, 2 ); t.strictEqual( v, 5.0, 'returns expected value' ); t.end(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/test/test.dnansumkbn.native.js b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/test/test.dnansumkbn.native.js index b0ce036ac59b..f2f3f5d1db25 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/test/test.dnansumkbn.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/test/test.dnansumkbn.native.js @@ -22,7 +22,6 @@ var resolve = require( 'path' ).resolve; var tape = require( 'tape' ); -var floor = require( '@stdlib/math/base/special/floor' ); var Float64Array = require( '@stdlib/array/float64' ); var tryRequire = require( '@stdlib/utils/try-require' ); @@ -44,7 +43,7 @@ tape( 'main export is a function', opts, function test( t ) { }); tape( 'the function has an arity of 3', opts, function test( t ) { - t.strictEqual( dnansumkbn.length, 3, 'has expected arity' ); + t.strictEqual( dnansumkbn.length, 3, 'returns expected value' ); t.end(); }); @@ -197,7 +196,6 @@ tape( 'if provided an `N` parameter equal to `1`, the function returns the first }); tape( 'the function supports a `stride` parameter', opts, function test( t ) { - var N; var x; var v; @@ -214,15 +212,13 @@ tape( 'the function supports a `stride` parameter', opts, function test( t ) { NaN ]); - N = floor( x.length / 2 ); - v = dnansumkbn( N, x, 2 ); + v = dnansumkbn( 5, x, 2 ); t.strictEqual( v, 5.0, 'returns expected value' ); t.end(); }); tape( 'the function supports a negative `stride` parameter', opts, function test( t ) { - var N; var x; var v; @@ -239,8 +235,7 @@ tape( 'the function supports a negative `stride` parameter', opts, function test 2.0 ]); - N = floor( x.length / 2 ); - v = dnansumkbn( N, x, -2 ); + v = dnansumkbn( 5, x, -2 ); t.strictEqual( v, 5.0, 'returns expected value' ); t.end(); @@ -261,7 +256,6 @@ tape( 'if provided a `stride` parameter equal to `0`, the function returns the f tape( 'the function supports view offsets', opts, function test( t ) { var x0; var x1; - var N; var v; x0 = new Float64Array([ @@ -279,9 +273,8 @@ tape( 'the function supports view offsets', opts, function test( t ) { ]); x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element - N = floor(x1.length / 2); - v = dnansumkbn( N, x1, 2 ); + v = dnansumkbn( 5, x1, 2 ); t.strictEqual( v, 5.0, 'returns expected value' ); t.end(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/test/test.ndarray.js index 56d099387c89..abda894269df 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/test/test.ndarray.js @@ -21,7 +21,6 @@ // MODULES // var tape = require( 'tape' ); -var floor = require( '@stdlib/math/base/special/floor' ); var Float64Array = require( '@stdlib/array/float64' ); var dnansumkbn = require( './../lib/ndarray.js' ); @@ -35,7 +34,7 @@ tape( 'main export is a function', function test( t ) { }); tape( 'the function has an arity of 4', function test( t ) { - t.strictEqual( dnansumkbn.length, 4, 'has expected arity' ); + t.strictEqual( dnansumkbn.length, 4, 'returns expected value' ); t.end(); }); @@ -106,7 +105,6 @@ tape( 'if provided an `N` parameter equal to `1`, the function returns the first }); tape( 'the function supports a `stride` parameter', function test( t ) { - var N; var x; var v; @@ -123,15 +121,13 @@ tape( 'the function supports a `stride` parameter', function test( t ) { NaN ]); - N = floor( x.length / 2 ); - v = dnansumkbn( N, x, 2, 0 ); + v = dnansumkbn( 5, x, 2, 0 ); t.strictEqual( v, 5.0, 'returns expected value' ); t.end(); }); tape( 'the function supports a negative `stride` parameter', function test( t ) { - var N; var x; var v; @@ -148,8 +144,7 @@ tape( 'the function supports a negative `stride` parameter', function test( t ) 2.0 ]); - N = floor( x.length / 2 ); - v = dnansumkbn( N, x, -2, 8 ); + v = dnansumkbn( 5, x, -2, 8 ); t.strictEqual( v, 5.0, 'returns expected value' ); t.end(); @@ -168,7 +163,6 @@ tape( 'if provided a `stride` parameter equal to `0`, the function returns the f }); tape( 'the function supports an `offset` parameter', function test( t ) { - var N; var x; var v; @@ -184,9 +178,8 @@ tape( 'the function supports an `offset` parameter', function test( t ) { NaN, NaN // 4 ]); - N = floor( x.length / 2 ); - v = dnansumkbn( N, x, 2, 1 ); + v = dnansumkbn( 5, x, 2, 1 ); t.strictEqual( v, 5.0, 'returns expected value' ); t.end(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/test/test.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/test/test.ndarray.native.js index b033253051c4..ae940922013c 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/test/test.ndarray.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn/test/test.ndarray.native.js @@ -22,7 +22,6 @@ var resolve = require( 'path' ).resolve; var tape = require( 'tape' ); -var floor = require( '@stdlib/math/base/special/floor' ); var Float64Array = require( '@stdlib/array/float64' ); var tryRequire = require( '@stdlib/utils/try-require' ); @@ -44,7 +43,7 @@ tape( 'main export is a function', opts, function test( t ) { }); tape( 'the function has an arity of 4', opts, function test( t ) { - t.strictEqual( dnansumkbn.length, 4, 'has expected arity' ); + t.strictEqual( dnansumkbn.length, 4, 'returns expected value' ); t.end(); }); @@ -115,7 +114,6 @@ tape( 'if provided an `N` parameter equal to `1`, the function returns the first }); tape( 'the function supports a `stride` parameter', opts, function test( t ) { - var N; var x; var v; @@ -132,15 +130,13 @@ tape( 'the function supports a `stride` parameter', opts, function test( t ) { NaN ]); - N = floor( x.length / 2 ); - v = dnansumkbn( N, x, 2, 0 ); + v = dnansumkbn( 5, x, 2, 0 ); t.strictEqual( v, 5.0, 'returns expected value' ); t.end(); }); tape( 'the function supports a negative `stride` parameter', opts, function test( t ) { - var N; var x; var v; @@ -157,8 +153,7 @@ tape( 'the function supports a negative `stride` parameter', opts, function test 2.0 ]); - N = floor( x.length / 2 ); - v = dnansumkbn( N, x, -2, 8 ); + v = dnansumkbn( 5, x, -2, 8 ); t.strictEqual( v, 5.0, 'returns expected value' ); t.end(); @@ -177,7 +172,6 @@ tape( 'if provided a `stride` parameter equal to `0`, the function returns the f }); tape( 'the function supports an `offset` parameter', opts, function test( t ) { - var N; var x; var v; @@ -193,9 +187,8 @@ tape( 'the function supports an `offset` parameter', opts, function test( t ) { NaN, NaN // 4 ]); - N = floor( x.length / 2 ); - v = dnansumkbn( N, x, 2, 1 ); + v = dnansumkbn( 5, x, 2, 1 ); t.strictEqual( v, 5.0, 'returns expected value' ); t.end(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/README.md b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/README.md index a42d3b421750..47c31c680c2e 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/README.md +++ b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/README.md @@ -44,9 +44,8 @@ Computes the sum of double-precision floating-point strided array elements, igno var Float64Array = require( '@stdlib/array/float64' ); var x = new Float64Array( [ 1.0, -2.0, NaN, 2.0 ] ); -var N = x.length; -var v = dnansumkbn2( N, x, 1 ); +var v = dnansumkbn2( 4, x, 1 ); // returns 1.0 ``` @@ -56,16 +55,14 @@ The function has the following parameters: - **x**: input [`Float64Array`][@stdlib/array/float64]. - **stride**: index increment for `x`. -The `N` and `stride` parameters determine which elements in `x` are accessed at runtime. For example, to compute the sum of every other element in `x`, +The `N` and stride parameters determine which elements in the strided arrays are accessed at runtime. For example, to compute the sum of every other element in `x`, ```javascript var Float64Array = require( '@stdlib/array/float64' ); -var floor = require( '@stdlib/math/base/special/floor' ); var x = new Float64Array( [ 1.0, 2.0, NaN, -7.0, NaN, 3.0, 4.0, 2.0 ] ); -var N = floor( x.length / 2 ); -var v = dnansumkbn2( N, x, 2 ); +var v = dnansumkbn2( 4, x, 2 ); // returns 5.0 ``` @@ -75,14 +72,11 @@ Note that indexing is relative to the first index. To introduce an offset, use [ ```javascript var Float64Array = require( '@stdlib/array/float64' ); -var floor = require( '@stdlib/math/base/special/floor' ); var x0 = new Float64Array( [ 2.0, 1.0, NaN, -2.0, -2.0, 2.0, 3.0, 4.0 ] ); var x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element -var N = floor( x0.length / 2 ); - -var v = dnansumkbn2( N, x1, 2 ); +var v = dnansumkbn2( 4, x1, 2 ); // returns 5.0 ``` @@ -94,9 +88,8 @@ Computes the sum of double-precision floating-point strided array elements, igno var Float64Array = require( '@stdlib/array/float64' ); var x = new Float64Array( [ 1.0, -2.0, NaN, 2.0 ] ); -var N = x.length; -var v = dnansumkbn2.ndarray( N, x, 1, 0 ); +var v = dnansumkbn2.ndarray( 4, x, 1, 0 ); // returns 1.0 ``` @@ -108,12 +101,10 @@ While [`typed array`][mdn-typed-array] views mandate a view offset based on the ```javascript var Float64Array = require( '@stdlib/array/float64' ); -var floor = require( '@stdlib/math/base/special/floor' ); var x = new Float64Array( [ 2.0, 1.0, NaN, -2.0, -2.0, 2.0, 3.0, 4.0 ] ); -var N = floor( x.length / 2 ); -var v = dnansumkbn2.ndarray( N, x, 2, 1 ); +var v = dnansumkbn2.ndarray( 4, x, 2, 1 ); // returns 5.0 ``` @@ -138,22 +129,11 @@ var v = dnansumkbn2.ndarray( N, x, 2, 1 ); ```javascript -var randu = require( '@stdlib/random/base/randu' ); -var round = require( '@stdlib/math/base/special/round' ); -var Float64Array = require( '@stdlib/array/float64' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var dnansumkbn2 = require( '@stdlib/blas/ext/base/dnansumkbn2' ); -var x; -var i; - -x = new Float64Array( 10 ); -for ( i = 0; i < x.length; i++ ) { - if ( randu() < 0.2 ) { - x[ i ] = NaN; - } else { - x[ i ] = round( randu()*100.0 ); - } -} +var x = filledarrayBy( 10, 'float64', discreteUniform( 0, 100 ) ); console.log( x ); var v = dnansumkbn2( x.length, x, 1 ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/benchmark/benchmark.js index d3e5c95ff7d3..fdb5aa5b68c4 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/benchmark/benchmark.js @@ -21,14 +21,19 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/base/uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); -var Float64Array = require( '@stdlib/array/float64' ); var pkg = require( './../package.json' ).name; var dnansumkbn2 = require( './../lib/dnansumkbn2.js' ); +// VARIABLES // + +var rand = uniform( -10.0, 10.0 ); + + // FUNCTIONS // /** @@ -39,17 +44,7 @@ var dnansumkbn2 = require( './../lib/dnansumkbn2.js' ); * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x; - var i; - - x = new Float64Array( len ); - for ( i = 0; i < x.length; i++ ) { - if ( randu() < 0.2 ) { - x[ i ] = NaN; - } else { - x[ i ] = ( randu()*10.0 ) - 20.0; - } - } + var x = filledarrayBy( len, 'float64', rand ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/benchmark/benchmark.native.js index 50d89a8805bc..b6ef5757d090 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/benchmark/benchmark.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/benchmark/benchmark.native.js @@ -22,10 +22,10 @@ var resolve = require( 'path' ).resolve; var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/base/uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); -var Float64Array = require( '@stdlib/array/float64' ); var tryRequire = require( '@stdlib/utils/try-require' ); var pkg = require( './../package.json' ).name; @@ -36,6 +36,7 @@ var dnansumkbn2 = tryRequire( resolve( __dirname, './../lib/dnansumkbn2.native.j var opts = { 'skip': ( dnansumkbn2 instanceof Error ) }; +var rand = uniform( -10.0, 10.0 ); // FUNCTIONS // @@ -48,17 +49,7 @@ var opts = { * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x; - var i; - - x = new Float64Array( len ); - for ( i = 0; i < x.length; i++ ) { - if ( randu() < 0.2 ) { - x[ i ] = NaN; - } else { - x[ i ] = ( randu()*10.0 ) - 20.0; - } - } + var x = filledarrayBy( len, 'float64', rand ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/benchmark/benchmark.ndarray.js index ff68d6289436..edfc5d945ae1 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/benchmark/benchmark.ndarray.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/benchmark/benchmark.ndarray.js @@ -21,14 +21,19 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/base/uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); -var Float64Array = require( '@stdlib/array/float64' ); var pkg = require( './../package.json' ).name; var dnansumkbn2 = require( './../lib/ndarray.js' ); +// VARIABLES // + +var rand = uniform( -10.0, 10.0 ); + + // FUNCTIONS // /** @@ -39,17 +44,7 @@ var dnansumkbn2 = require( './../lib/ndarray.js' ); * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x; - var i; - - x = new Float64Array( len ); - for ( i = 0; i < x.length; i++ ) { - if ( randu() < 0.2 ) { - x[ i ] = NaN; - } else { - x[ i ] = ( randu()*10.0 ) - 20.0; - } - } + var x = filledarrayBy( len, 'float64', rand ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/benchmark/benchmark.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/benchmark/benchmark.ndarray.native.js index 11dfb2d30b87..d4cfb74d722f 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/benchmark/benchmark.ndarray.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/benchmark/benchmark.ndarray.native.js @@ -22,10 +22,10 @@ var resolve = require( 'path' ).resolve; var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/base/uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); -var Float64Array = require( '@stdlib/array/float64' ); var tryRequire = require( '@stdlib/utils/try-require' ); var pkg = require( './../package.json' ).name; @@ -36,6 +36,7 @@ var dnansumkbn2 = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) var opts = { 'skip': ( dnansumkbn2 instanceof Error ) }; +var rand = uniform( -10.0, 10.0 ); // FUNCTIONS // @@ -48,17 +49,7 @@ var opts = { * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x; - var i; - - x = new Float64Array( len ); - for ( i = 0; i < x.length; i++ ) { - if ( randu() < 0.2 ) { - x[ i ] = NaN; - } else { - x[ i ] = ( randu()*10.0 ) - 20.0; - } - } + var x = filledarrayBy( len, 'float64', rand ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/docs/repl.txt index ceb61fc54ac2..938d719aafd4 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/docs/repl.txt +++ b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/docs/repl.txt @@ -4,8 +4,8 @@ ignoring `NaN` values and using a second-order iterative Kahan–Babuška algorithm. - The `N` and `stride` parameters determine which elements in `x` are accessed - at runtime. + The `N` and stride parameters determine which elements in the strided + array are accessed at runtime. Indexing is relative to the first index. To introduce an offset, use a typed array view. @@ -37,19 +37,16 @@ // Using `N` and `stride` parameters: > x = new {{alias:@stdlib/array/float64}}( [ -2.0, 1.0, 1.0, -5.0, 2.0, -1.0, NaN, NaN ] ); - > var N = {{alias:@stdlib/math/base/special/floor}}( x.length / 2 ); - > var stride = 2; - > {{alias}}( N, x, stride ) + > {{alias}}( 4, x, 2 ) 1.0 // Using view offsets: > var x0 = new {{alias:@stdlib/array/float64}}( [ 1.0, -2.0, 3.0, 2.0, 5.0, -1.0, NaN, NaN ] ); > var x1 = new {{alias:@stdlib/array/float64}}( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); - > N = {{alias:@stdlib/math/base/special/floor}}( x0.length / 2 ); - > stride = 2; - > {{alias}}( N, x1, stride ) + > {{alias}}( 4, x1, 2 ) -1.0 + {{alias}}.ndarray( N, x, stride, offset ) Computes the sum of double-precision floating-point strided array elements, ignoring `NaN` values and using a second-order iterative Kahan–Babuška @@ -87,8 +84,7 @@ // Using offset parameter: > var x = new {{alias:@stdlib/array/float64}}( [ 1.0, -2.0, 3.0, 2.0, 5.0, -1.0, NaN, NaN ] ); - > var N = {{alias:@stdlib/math/base/special/floor}}( x.length / 2 ); - > {{alias}}.ndarray( N, x, 2, 1 ) + > {{alias}}.ndarray( 4, x, 2, 1 ) -1.0 See Also diff --git a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/examples/index.js index 36d697853f27..766e1f487875 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/examples/index.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/examples/index.js @@ -18,22 +18,11 @@ 'use strict'; -var randu = require( '@stdlib/random/base/randu' ); -var round = require( '@stdlib/math/base/special/round' ); -var Float64Array = require( '@stdlib/array/float64' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var dnansumkbn2 = require( './../lib' ); -var x; -var i; - -x = new Float64Array( 10 ); -for ( i = 0; i < x.length; i++ ) { - if ( randu() < 0.2 ) { - x[ i ] = NaN; - } else { - x[ i ] = round( randu()*100.0 ); - } -} +var x = filledarrayBy( 10, 'float64', discreteUniform( 0.0, 100.0 ) ); console.log( x ); var v = dnansumkbn2( x.length, x, 1 ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/include.gypi b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/include.gypi index 868c5c12e852..26476a8c2655 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/include.gypi +++ b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/include.gypi @@ -36,7 +36,7 @@ # Source files: 'src_files': [ - '<(src_dir)/addon.cpp', + '<(src_dir)/addon.c', ' +#include + +/** +* Receives JavaScript callback invocation data. +* +* @private +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 3 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_INT64( env, stride, argv, 2 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT64ARRAY( env, X, N, stride, argv, 1 ); + + napi_value v; + napi_status status = napi_create_double( env, stdlib_strided_dnansumkbn2( N, X, stride ), &v ); + assert( status == napi_ok ); + + return v; +} + +STDLIB_NAPI_MODULE_EXPORT_FCN( addon ) diff --git a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/src/addon.cpp b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/src/addon.cpp deleted file mode 100644 index 633c8bc7e04e..000000000000 --- a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/src/addon.cpp +++ /dev/null @@ -1,117 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2020 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/blas/ext/base/dnansumkbn2.h" -#include -#include -#include -#include -#include - -/** -* Add-on namespace. -*/ -namespace stdlib_blas_ext_base_dnansumkbn2 { - - /** - * Computes the sum of double-precision floating-point strided array elements, ignoring `NaN` values and using a second-order iterative Kahan–Babuška algorithm. - * - * ## Notes - * - * - When called from JavaScript, the function expects three arguments: - * - * - `N`: number of indexed elements - * - `X`: input array - * - `stride`: stride length - */ - napi_value node_dnansumkbn2( napi_env env, napi_callback_info info ) { - napi_status status; - - size_t argc = 3; - napi_value argv[ 3 ]; - status = napi_get_cb_info( env, info, &argc, argv, nullptr, nullptr ); - assert( status == napi_ok ); - - if ( argc < 3 ) { - napi_throw_error( env, nullptr, "invalid invocation. Must provide 3 arguments." ); - return nullptr; - } - - napi_valuetype vtype0; - status = napi_typeof( env, argv[ 0 ], &vtype0 ); - assert( status == napi_ok ); - if ( vtype0 != napi_number ) { - napi_throw_type_error( env, nullptr, "invalid argument. First argument must be a number." ); - return nullptr; - } - - bool res; - status = napi_is_typedarray( env, argv[ 1 ], &res ); - assert( status == napi_ok ); - if ( res == false ) { - napi_throw_type_error( env, nullptr, "invalid argument. Second argument must be a Float64Array." ); - return nullptr; - } - - napi_valuetype vtype2; - status = napi_typeof( env, argv[ 2 ], &vtype2 ); - assert( status == napi_ok ); - if ( vtype2 != napi_number ) { - napi_throw_type_error( env, nullptr, "invalid argument. Third argument must be a number." ); - return nullptr; - } - - int64_t N; - status = napi_get_value_int64( env, argv[ 0 ], &N ); - assert( status == napi_ok ); - - int64_t stride; - status = napi_get_value_int64( env, argv[ 2 ], &stride ); - assert( status == napi_ok ); - - napi_typedarray_type vtype1; - size_t xlen; - void *X; - status = napi_get_typedarray_info( env, argv[ 1 ], &vtype1, &xlen, &X, nullptr, nullptr ); - assert( status == napi_ok ); - if ( vtype1 != napi_float64_array ) { - napi_throw_type_error( env, nullptr, "invalid argument. Second argument must be a Float64Array." ); - return nullptr; - } - if ( (N-1)*llabs(stride) >= (int64_t)xlen ) { - napi_throw_range_error( env, nullptr, "invalid argument. Second argument has insufficient elements based on the associated stride and the number of indexed elements." ); - return nullptr; - } - - napi_value v; - status = napi_create_double( env, stdlib_strided_dnansumkbn2( N, (double *)X, stride ), &v ); - assert( status == napi_ok ); - - return v; - } - - napi_value Init( napi_env env, napi_value exports ) { - napi_status status; - napi_value fcn; - status = napi_create_function( env, "exports", NAPI_AUTO_LENGTH, node_dnansumkbn2, NULL, &fcn ); - assert( status == napi_ok ); - return fcn; - } - - NAPI_MODULE( NODE_GYP_MODULE_NAME, Init ) -} // end namespace stdlib_blas_ext_base_dnansumkbn2 diff --git a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/test/test.dnansumkbn2.js b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/test/test.dnansumkbn2.js index 6e1bc1b027c7..25571e885b98 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/test/test.dnansumkbn2.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/test/test.dnansumkbn2.js @@ -21,7 +21,6 @@ // MODULES // var tape = require( 'tape' ); -var floor = require( '@stdlib/math/base/special/floor' ); var Float64Array = require( '@stdlib/array/float64' ); var dnansumkbn2 = require( './../lib/dnansumkbn2.js' ); @@ -35,7 +34,7 @@ tape( 'main export is a function', function test( t ) { }); tape( 'the function has an arity of 3', function test( t ) { - t.strictEqual( dnansumkbn2.length, 3, 'has expected arity' ); + t.strictEqual( dnansumkbn2.length, 3, 'returns expected value' ); t.end(); }); @@ -106,7 +105,6 @@ tape( 'if provided an `N` parameter equal to `1`, the function returns the first }); tape( 'the function supports a `stride` parameter', function test( t ) { - var N; var x; var v; @@ -123,15 +121,13 @@ tape( 'the function supports a `stride` parameter', function test( t ) { NaN ]); - N = floor( x.length / 2 ); - v = dnansumkbn2( N, x, 2 ); + v = dnansumkbn2( 5, x, 2 ); t.strictEqual( v, 5.0, 'returns expected value' ); t.end(); }); tape( 'the function supports a negative `stride` parameter', function test( t ) { - var N; var x; var v; @@ -148,8 +144,7 @@ tape( 'the function supports a negative `stride` parameter', function test( t ) 2.0 ]); - N = floor( x.length / 2 ); - v = dnansumkbn2( N, x, -2 ); + v = dnansumkbn2( 5, x, -2 ); t.strictEqual( v, 5.0, 'returns expected value' ); t.end(); @@ -170,7 +165,6 @@ tape( 'if provided a `stride` parameter equal to `0`, the function returns the f tape( 'the function supports view offsets', function test( t ) { var x0; var x1; - var N; var v; x0 = new Float64Array([ @@ -188,9 +182,8 @@ tape( 'the function supports view offsets', function test( t ) { ]); x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element - N = floor(x1.length / 2); - v = dnansumkbn2( N, x1, 2 ); + v = dnansumkbn2( 5, x1, 2 ); t.strictEqual( v, 5.0, 'returns expected value' ); t.end(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/test/test.dnansumkbn2.native.js b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/test/test.dnansumkbn2.native.js index 47df57c90488..48453c89aae8 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/test/test.dnansumkbn2.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/test/test.dnansumkbn2.native.js @@ -22,7 +22,6 @@ var resolve = require( 'path' ).resolve; var tape = require( 'tape' ); -var floor = require( '@stdlib/math/base/special/floor' ); var Float64Array = require( '@stdlib/array/float64' ); var tryRequire = require( '@stdlib/utils/try-require' ); @@ -44,7 +43,7 @@ tape( 'main export is a function', opts, function test( t ) { }); tape( 'the function has an arity of 3', opts, function test( t ) { - t.strictEqual( dnansumkbn2.length, 3, 'has expected arity' ); + t.strictEqual( dnansumkbn2.length, 3, 'returns expected value' ); t.end(); }); @@ -197,7 +196,6 @@ tape( 'if provided an `N` parameter equal to `1`, the function returns the first }); tape( 'the function supports a `stride` parameter', opts, function test( t ) { - var N; var x; var v; @@ -214,15 +212,13 @@ tape( 'the function supports a `stride` parameter', opts, function test( t ) { NaN ]); - N = floor( x.length / 2 ); - v = dnansumkbn2( N, x, 2 ); + v = dnansumkbn2( 5, x, 2 ); t.strictEqual( v, 5.0, 'returns expected value' ); t.end(); }); tape( 'the function supports a negative `stride` parameter', opts, function test( t ) { - var N; var x; var v; @@ -239,8 +235,7 @@ tape( 'the function supports a negative `stride` parameter', opts, function test 2.0 ]); - N = floor( x.length / 2 ); - v = dnansumkbn2( N, x, -2 ); + v = dnansumkbn2( 5, x, -2 ); t.strictEqual( v, 5.0, 'returns expected value' ); t.end(); @@ -261,7 +256,6 @@ tape( 'if provided a `stride` parameter equal to `0`, the function returns the f tape( 'the function supports view offsets', opts, function test( t ) { var x0; var x1; - var N; var v; x0 = new Float64Array([ @@ -279,9 +273,8 @@ tape( 'the function supports view offsets', opts, function test( t ) { ]); x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element - N = floor(x1.length / 2); - v = dnansumkbn2( N, x1, 2 ); + v = dnansumkbn2( 5, x1, 2 ); t.strictEqual( v, 5.0, 'returns expected value' ); t.end(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/test/test.ndarray.js index bae620f19ddb..baab443c5899 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/test/test.ndarray.js @@ -21,7 +21,6 @@ // MODULES // var tape = require( 'tape' ); -var floor = require( '@stdlib/math/base/special/floor' ); var Float64Array = require( '@stdlib/array/float64' ); var dnansumkbn2 = require( './../lib/ndarray.js' ); @@ -35,7 +34,7 @@ tape( 'main export is a function', function test( t ) { }); tape( 'the function has an arity of 4', function test( t ) { - t.strictEqual( dnansumkbn2.length, 4, 'has expected arity' ); + t.strictEqual( dnansumkbn2.length, 4, 'returns expected value' ); t.end(); }); @@ -106,7 +105,6 @@ tape( 'if provided an `N` parameter equal to `1`, the function returns the first }); tape( 'the function supports a `stride` parameter', function test( t ) { - var N; var x; var v; @@ -123,15 +121,13 @@ tape( 'the function supports a `stride` parameter', function test( t ) { NaN ]); - N = floor( x.length / 2 ); - v = dnansumkbn2( N, x, 2, 0 ); + v = dnansumkbn2( 5, x, 2, 0 ); t.strictEqual( v, 5.0, 'returns expected value' ); t.end(); }); tape( 'the function supports a negative `stride` parameter', function test( t ) { - var N; var x; var v; @@ -148,8 +144,7 @@ tape( 'the function supports a negative `stride` parameter', function test( t ) 2.0 ]); - N = floor( x.length / 2 ); - v = dnansumkbn2( N, x, -2, 8 ); + v = dnansumkbn2( 5, x, -2, 8 ); t.strictEqual( v, 5.0, 'returns expected value' ); t.end(); @@ -168,7 +163,6 @@ tape( 'if provided a `stride` parameter equal to `0`, the function returns the f }); tape( 'the function supports an `offset` parameter', function test( t ) { - var N; var x; var v; @@ -184,9 +178,8 @@ tape( 'the function supports an `offset` parameter', function test( t ) { NaN, NaN // 4 ]); - N = floor( x.length / 2 ); - v = dnansumkbn2( N, x, 2, 1 ); + v = dnansumkbn2( 5, x, 2, 1 ); t.strictEqual( v, 5.0, 'returns expected value' ); t.end(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/test/test.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/test/test.ndarray.native.js index c120b7f25acc..1f1db1387986 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/test/test.ndarray.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dnansumkbn2/test/test.ndarray.native.js @@ -22,7 +22,6 @@ var resolve = require( 'path' ).resolve; var tape = require( 'tape' ); -var floor = require( '@stdlib/math/base/special/floor' ); var Float64Array = require( '@stdlib/array/float64' ); var tryRequire = require( '@stdlib/utils/try-require' ); @@ -44,7 +43,7 @@ tape( 'main export is a function', opts, function test( t ) { }); tape( 'the function has an arity of 4', opts, function test( t ) { - t.strictEqual( dnansumkbn2.length, 4, 'has expected arity' ); + t.strictEqual( dnansumkbn2.length, 4, 'returns expected value' ); t.end(); }); @@ -115,7 +114,6 @@ tape( 'if provided an `N` parameter equal to `1`, the function returns the first }); tape( 'the function supports a `stride` parameter', opts, function test( t ) { - var N; var x; var v; @@ -132,15 +130,13 @@ tape( 'the function supports a `stride` parameter', opts, function test( t ) { NaN ]); - N = floor( x.length / 2 ); - v = dnansumkbn2( N, x, 2, 0 ); + v = dnansumkbn2( 5, x, 2, 0 ); t.strictEqual( v, 5.0, 'returns expected value' ); t.end(); }); tape( 'the function supports a negative `stride` parameter', opts, function test( t ) { - var N; var x; var v; @@ -157,8 +153,7 @@ tape( 'the function supports a negative `stride` parameter', opts, function test 2.0 ]); - N = floor( x.length / 2 ); - v = dnansumkbn2( N, x, -2, 8 ); + v = dnansumkbn2( 5, x, -2, 8 ); t.strictEqual( v, 5.0, 'returns expected value' ); t.end(); @@ -177,7 +172,6 @@ tape( 'if provided a `stride` parameter equal to `0`, the function returns the f }); tape( 'the function supports an `offset` parameter', opts, function test( t ) { - var N; var x; var v; @@ -193,9 +187,8 @@ tape( 'the function supports an `offset` parameter', opts, function test( t ) { NaN, NaN // 4 ]); - N = floor( x.length / 2 ); - v = dnansumkbn2( N, x, 2, 1 ); + v = dnansumkbn2( 5, x, 2, 1 ); t.strictEqual( v, 5.0, 'returns expected value' ); t.end(); diff --git a/lib/node_modules/@stdlib/constants/float32/fourth-pi/README.md b/lib/node_modules/@stdlib/constants/float32/fourth-pi/README.md new file mode 100644 index 000000000000..459d53507d63 --- /dev/null +++ b/lib/node_modules/@stdlib/constants/float32/fourth-pi/README.md @@ -0,0 +1,123 @@ + + +# FLOAT32_FOURTH_PI + +> One fourth times the mathematical constant [π][pi]. + +
+ +## Usage + +```javascript +var FLOAT32_FOURTH_PI = require( '@stdlib/constants/float32/fourth-pi' ); +``` + +#### FLOAT32_FOURTH_PI + +One fourth times the mathematical constant [π][pi]. + +```javascript +var bool = ( FLOAT32_FOURTH_PI === 7.853981852531433e-1 ); +// returns true +``` + +
+ + + +
+ +## Examples + + + + + +```javascript +var FLOAT32_FOURTH_PI = require( '@stdlib/constants/float32/fourth-pi' ); + +console.log( FLOAT32_FOURTH_PI ); +// => 7.853981852531433e-1 +``` + +
+ + + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/constants/float32/fourth_pi.h" +``` + +#### STDLIB_CONSTANT_FLOAT32_FOURTH_PI + +Macro for one fourth times the mathematical constant [π][pi]. + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/constants/float32/fourth-pi/docs/repl.txt b/lib/node_modules/@stdlib/constants/float32/fourth-pi/docs/repl.txt new file mode 100644 index 000000000000..efae0800d96e --- /dev/null +++ b/lib/node_modules/@stdlib/constants/float32/fourth-pi/docs/repl.txt @@ -0,0 +1,12 @@ + +{{alias}} + One fourth times the mathematical constant `π`. + + Examples + -------- + > {{alias}} + 7.853981852531433e-1 + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/constants/float32/fourth-pi/docs/types/index.d.ts b/lib/node_modules/@stdlib/constants/float32/fourth-pi/docs/types/index.d.ts new file mode 100644 index 000000000000..6937a360835f --- /dev/null +++ b/lib/node_modules/@stdlib/constants/float32/fourth-pi/docs/types/index.d.ts @@ -0,0 +1,33 @@ +/* +* @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 + +/** +* One fourth times the mathematical constant `π`. +* +* @example +* var val = FLOAT32_FOURTH_PI; +* // returns 7.853981852531433e-1 +*/ +declare const FLOAT32_FOURTH_PI: number; + + +// EXPORTS // + +export = FLOAT32_FOURTH_PI; diff --git a/lib/node_modules/@stdlib/constants/float32/fourth-pi/docs/types/test.ts b/lib/node_modules/@stdlib/constants/float32/fourth-pi/docs/types/test.ts new file mode 100644 index 000000000000..3e493d34551a --- /dev/null +++ b/lib/node_modules/@stdlib/constants/float32/fourth-pi/docs/types/test.ts @@ -0,0 +1,28 @@ +/* +* @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 FLOAT32_FOURTH_PI = require( './index' ); + + +// TESTS // + +// The export is a number... +{ + // eslint-disable-next-line @typescript-eslint/no-unused-expressions + FLOAT32_FOURTH_PI; // $ExpectType number +} diff --git a/lib/node_modules/@stdlib/constants/float32/fourth-pi/examples/index.js b/lib/node_modules/@stdlib/constants/float32/fourth-pi/examples/index.js new file mode 100644 index 000000000000..44bc887095b8 --- /dev/null +++ b/lib/node_modules/@stdlib/constants/float32/fourth-pi/examples/index.js @@ -0,0 +1,24 @@ +/** +* @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 FLOAT32_FOURTH_PI = require( './../lib' ); + +console.log( FLOAT32_FOURTH_PI ); +// => 7.853981852531433e-1 diff --git a/lib/node_modules/@stdlib/constants/float32/fourth-pi/include/stdlib/constants/float32/fourth_pi.h b/lib/node_modules/@stdlib/constants/float32/fourth-pi/include/stdlib/constants/float32/fourth_pi.h new file mode 100644 index 000000000000..1e2cd48c9563 --- /dev/null +++ b/lib/node_modules/@stdlib/constants/float32/fourth-pi/include/stdlib/constants/float32/fourth_pi.h @@ -0,0 +1,27 @@ +/** +* @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. +*/ + +#ifndef STDLIB_CONSTANTS_FLOAT32_FOURTH_PI_H +#define STDLIB_CONSTANTS_FLOAT32_FOURTH_PI_H + +/** +* Macro for one fourth times the mathematical constant π. +*/ +#define STDLIB_CONSTANT_FLOAT32_FOURTH_PI 7.85398163397448309616e-1f + +#endif // !STDLIB_CONSTANTS_FLOAT32_FOURTH_PI_H diff --git a/lib/node_modules/@stdlib/constants/float32/fourth-pi/lib/index.js b/lib/node_modules/@stdlib/constants/float32/fourth-pi/lib/index.js new file mode 100644 index 000000000000..a38b8e64f407 --- /dev/null +++ b/lib/node_modules/@stdlib/constants/float32/fourth-pi/lib/index.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'; + +/** +* One fourth times the mathematical constant `π`. +* +* @module @stdlib/constants/float32/fourth-pi +* @type {number} +* +* @example +* var FLOAT32_FOURTH_PI = require( '@stdlib/constants/float32/fourth-pi' ); +* // returns 7.853981852531433e-1 +*/ + +// MODULES // + +var float64ToFloat32 = require( '@stdlib/number/float64/base/to-float32' ); + + +// MAIN // + +/** +* One fourth times the mathematical constant `π`. +* +* @constant +* @type {number} +* @default 7.853981852531433e-1 +* @see [Wikipedia]{@link https://en.wikipedia.org/wiki/Pi} +*/ +var FLOAT32_FOURTH_PI = float64ToFloat32( 7.85398163397448309616e-1 ); + + +// EXPORTS // + +module.exports = FLOAT32_FOURTH_PI; diff --git a/lib/node_modules/@stdlib/constants/float32/fourth-pi/manifest.json b/lib/node_modules/@stdlib/constants/float32/fourth-pi/manifest.json new file mode 100644 index 000000000000..844d692f6439 --- /dev/null +++ b/lib/node_modules/@stdlib/constants/float32/fourth-pi/manifest.json @@ -0,0 +1,36 @@ +{ + "options": {}, + "fields": [ + { + "field": "src", + "resolve": true, + "relative": true + }, + { + "field": "include", + "resolve": true, + "relative": true + }, + { + "field": "libraries", + "resolve": false, + "relative": false + }, + { + "field": "libpath", + "resolve": true, + "relative": false + } + ], + "confs": [ + { + "src": [], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [] + } + ] +} diff --git a/lib/node_modules/@stdlib/constants/float32/fourth-pi/package.json b/lib/node_modules/@stdlib/constants/float32/fourth-pi/package.json new file mode 100644 index 000000000000..769d5b8f5e64 --- /dev/null +++ b/lib/node_modules/@stdlib/constants/float32/fourth-pi/package.json @@ -0,0 +1,65 @@ +{ + "name": "@stdlib/constants/float32/fourth-pi", + "version": "0.0.0", + "description": "1/4 times π.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "doc": "./docs", + "example": "./examples", + "include": "./include", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "constant", + "const", + "mathematics", + "math", + "fourth", + "pi", + "ieee754", + "float", + "floating-point", + "float32" + ] +} diff --git a/lib/node_modules/@stdlib/constants/float32/fourth-pi/test/test.js b/lib/node_modules/@stdlib/constants/float32/fourth-pi/test/test.js new file mode 100644 index 000000000000..6d5361253b2f --- /dev/null +++ b/lib/node_modules/@stdlib/constants/float32/fourth-pi/test/test.js @@ -0,0 +1,39 @@ +/** +* @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 float64ToFloat32 = require( '@stdlib/number/float64/base/to-float32' ); +var FLOAT32_FOURTH_PI = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a number', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof FLOAT32_FOURTH_PI, 'number', 'main export is a number' ); + t.end(); +}); + +tape( 'export is a single-precision floating-point number equal to 7.853981852531433e-1', function test( t ) { + t.equal( FLOAT32_FOURTH_PI, float64ToFloat32( 7.85398163397448309616e-1 ), 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/constants/float32/pi/README.md b/lib/node_modules/@stdlib/constants/float32/pi/README.md new file mode 100644 index 000000000000..d09323920e77 --- /dev/null +++ b/lib/node_modules/@stdlib/constants/float32/pi/README.md @@ -0,0 +1,123 @@ + + +# FLOAT32_PI + +> The mathematical constant [π][pi]. + +
+ +## Usage + +```javascript +var FLOAT32_PI = require( '@stdlib/constants/float32/pi' ); +``` + +#### FLOAT32_PI + +The mathematical constant [π][pi]. + +```javascript +var bool = ( FLOAT32_PI === 3.1415927410125732 ); +// returns true +``` + +
+ + + +
+ +## Examples + + + + + +```javascript +var FLOAT32_PI = require( '@stdlib/constants/float32/pi' ); + +console.log( FLOAT32_PI ); +// => 3.1415927410125732 +``` + +
+ + + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/constants/float32/pi.h" +``` + +#### STDLIB_CONSTANT_FLOAT32_PI + +Macro for the mathematical constant [π][pi]. + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/constants/float32/pi/docs/repl.txt b/lib/node_modules/@stdlib/constants/float32/pi/docs/repl.txt new file mode 100644 index 000000000000..b1ba5d10196d --- /dev/null +++ b/lib/node_modules/@stdlib/constants/float32/pi/docs/repl.txt @@ -0,0 +1,12 @@ + +{{alias}} + The mathematical constant `π`. + + Examples + -------- + > {{alias}} + 3.1415927410125732 + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/constants/float32/pi/docs/types/index.d.ts b/lib/node_modules/@stdlib/constants/float32/pi/docs/types/index.d.ts new file mode 100644 index 000000000000..5e4daf7162a9 --- /dev/null +++ b/lib/node_modules/@stdlib/constants/float32/pi/docs/types/index.d.ts @@ -0,0 +1,33 @@ +/* +* @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 + +/** +* The mathematical constant `π`. +* +* @example +* var val = FLOAT32_PI; +* // returns 3.1415927410125732 +*/ +declare const FLOAT32_PI: number; + + +// EXPORTS // + +export = FLOAT32_PI; diff --git a/lib/node_modules/@stdlib/constants/float32/pi/docs/types/test.ts b/lib/node_modules/@stdlib/constants/float32/pi/docs/types/test.ts new file mode 100644 index 000000000000..96c4c9cb6567 --- /dev/null +++ b/lib/node_modules/@stdlib/constants/float32/pi/docs/types/test.ts @@ -0,0 +1,28 @@ +/* +* @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 FLOAT32_PI = require( './index' ); + + +// TESTS // + +// The export is a number... +{ + // eslint-disable-next-line @typescript-eslint/no-unused-expressions + FLOAT32_PI; // $ExpectType number +} diff --git a/lib/node_modules/@stdlib/constants/float32/pi/examples/index.js b/lib/node_modules/@stdlib/constants/float32/pi/examples/index.js new file mode 100644 index 000000000000..79ba7aec9a88 --- /dev/null +++ b/lib/node_modules/@stdlib/constants/float32/pi/examples/index.js @@ -0,0 +1,24 @@ +/** +* @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 FLOAT32_PI = require( './../lib' ); + +console.log( FLOAT32_PI ); +// => 3.1415927410125732 diff --git a/lib/node_modules/@stdlib/constants/float32/pi/include/stdlib/constants/float32/pi.h b/lib/node_modules/@stdlib/constants/float32/pi/include/stdlib/constants/float32/pi.h new file mode 100644 index 000000000000..b5423f250e18 --- /dev/null +++ b/lib/node_modules/@stdlib/constants/float32/pi/include/stdlib/constants/float32/pi.h @@ -0,0 +1,27 @@ +/** +* @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. +*/ + +#ifndef STDLIB_CONSTANTS_FLOAT32_PI_H +#define STDLIB_CONSTANTS_FLOAT32_PI_H + +/** +* Macro for the mathematical constant π. +*/ +#define STDLIB_CONSTANT_FLOAT32_PI 3.141592653589793f + +#endif // !STDLIB_CONSTANTS_FLOAT32_PI_H diff --git a/lib/node_modules/@stdlib/constants/float32/pi/lib/index.js b/lib/node_modules/@stdlib/constants/float32/pi/lib/index.js new file mode 100644 index 000000000000..536b3657f607 --- /dev/null +++ b/lib/node_modules/@stdlib/constants/float32/pi/lib/index.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'; + +/** +* The mathematical constant `π`. +* +* @module @stdlib/constants/float32/pi +* @type {number} +* +* @example +* var FLOAT32_PI = require( '@stdlib/constants/float32/pi' ); +* // returns 3.1415927410125732 +*/ + +// MODULES // + +var float64ToFloat32 = require( '@stdlib/number/float64/base/to-float32' ); + + +// MAIN // + +/** +* The mathematical constant `π`. +* +* @constant +* @type {number} +* @default 3.1415927410125732 +* @see [Wikipedia]{@link https://en.wikipedia.org/wiki/Pi} +*/ +var FLOAT32_PI = float64ToFloat32( 3.141592653589793 ); + + +// EXPORTS // + +module.exports = FLOAT32_PI; diff --git a/lib/node_modules/@stdlib/constants/float32/pi/manifest.json b/lib/node_modules/@stdlib/constants/float32/pi/manifest.json new file mode 100644 index 000000000000..844d692f6439 --- /dev/null +++ b/lib/node_modules/@stdlib/constants/float32/pi/manifest.json @@ -0,0 +1,36 @@ +{ + "options": {}, + "fields": [ + { + "field": "src", + "resolve": true, + "relative": true + }, + { + "field": "include", + "resolve": true, + "relative": true + }, + { + "field": "libraries", + "resolve": false, + "relative": false + }, + { + "field": "libpath", + "resolve": true, + "relative": false + } + ], + "confs": [ + { + "src": [], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [] + } + ] +} diff --git a/lib/node_modules/@stdlib/constants/float32/pi/package.json b/lib/node_modules/@stdlib/constants/float32/pi/package.json new file mode 100644 index 000000000000..272b23cf2f68 --- /dev/null +++ b/lib/node_modules/@stdlib/constants/float32/pi/package.json @@ -0,0 +1,64 @@ +{ + "name": "@stdlib/constants/float32/pi", + "version": "0.0.0", + "description": "π.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "doc": "./docs", + "example": "./examples", + "include": "./include", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "constant", + "const", + "mathematics", + "math", + "pi", + "ieee754", + "float", + "floating-point", + "float32" + ] +} diff --git a/lib/node_modules/@stdlib/constants/float32/pi/test/test.js b/lib/node_modules/@stdlib/constants/float32/pi/test/test.js new file mode 100644 index 000000000000..b54bcb9e789a --- /dev/null +++ b/lib/node_modules/@stdlib/constants/float32/pi/test/test.js @@ -0,0 +1,39 @@ +/** +* @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 float64ToFloat32 = require( '@stdlib/number/float64/base/to-float32' ); +var FLOAT32_PI = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a number', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof FLOAT32_PI, 'number', 'main export is a number' ); + t.end(); +}); + +tape( 'export is a single-precision floating-point number equal to 3.1415927410125732', function test( t ) { + t.equal( FLOAT32_PI, float64ToFloat32( 3.141592653589793 ), 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/math/base/special/asinf/LICENSE b/lib/node_modules/@stdlib/math/base/special/asinf/LICENSE new file mode 100644 index 000000000000..a5bc4d9bf3fd --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/asinf/LICENSE @@ -0,0 +1,195 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +DEPENDENCIES & ATTRIBUTION + +The library links against the following external libraries or contains +implementations from the following external libraries, which have their own +licenses: + +* Cephes + +Copyright (c) 1984-2000 Stephen L. Moshier + +Some software in this archive may be from the book _Methods and Programs for +Mathematical Functions_ (Prentice-Hall or Simon & Schuster International, 1989) +or from the Cephes Mathematical Library, a commercial product. In either event, +it is copyrighted by the author. What you see here may be used freely but it +comes with no support or guarantee. + +Stephen L. Moshier +moshier@na-net.ornl.gov diff --git a/lib/node_modules/@stdlib/math/base/special/asinf/README.md b/lib/node_modules/@stdlib/math/base/special/asinf/README.md new file mode 100644 index 000000000000..60ad620152f2 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/asinf/README.md @@ -0,0 +1,175 @@ + + +# asinf + +> Compute the [arcsine][arcsine] of a single-precision floating-point number. + +
+ +## Usage + +```javascript +var asinf = require( '@stdlib/math/base/special/asinf' ); +``` + +#### asinf( x ) + +Computes the [arcsine][arcsine] of a single-precision floating-point number (in radians). + +```javascript +var v = asinf( 0.0 ); +// returns 0.0 + +v = asinf( -3.14/6.0 ); +// returns ~-0.551 +``` + +
+ + + +
+ +## Examples + + + +```javascript +var linspace = require( '@stdlib/array/base/linspace' ); +var asinf = require( '@stdlib/math/base/special/asinf' ); + +var x = linspace( -1.0, 1.0, 100 ); + +var i; +for ( i = 0; i < x.length; i++ ) { + console.log( asinf( x[ i ] ) ); +} +``` + +
+ + + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/math/base/special/asinf.h" +``` + +#### stdlib_base_asinf( x ) + +Computes the [arcsine][arcsine] of a single-precision floating-point number (in radians). + +```c +float out = stdlib_base_asinf( 0.0f ); +// returns 0.0f + +out = stdlib_base_asinf( -3.14f/6.0f ); +// returns ~-0.551f +``` + +The function accepts the following arguments: + +- **x**: `[in] float` input value (in radians). + +```c +float stdlib_base_asinf( const float x ); +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/math/base/special/asinf.h" +#include + +int main( void ) { + const float x[] = { -1.0f, -0.78f, -0.56f, -0.33f, -0.11f, 0.11f, 0.33f, 0.56f, 0.78f, 1.0f }; + + float v; + int i; + for ( i = 0; i < 10; i++ ) { + v = stdlib_base_asinf( x[ i ] ); + printf( "asin(%f) = %f\n", x[ i ], v ); + } +} +``` + +
+ + + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/math/base/special/asinf/benchmark/benchmark.js b/lib/node_modules/@stdlib/math/base/special/asinf/benchmark/benchmark.js new file mode 100644 index 000000000000..9ac5217a683a --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/asinf/benchmark/benchmark.js @@ -0,0 +1,51 @@ +/** +* @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/base/randu' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pkg = require( './../package.json' ).name; +var asinf = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var x; + var y; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + x = ( randu() * 2.0 ) - 1.0; + y = asinf( x ); + if ( isnanf( y ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( y ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/math/base/special/asinf/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/math/base/special/asinf/benchmark/benchmark.native.js new file mode 100644 index 000000000000..8d48947490d0 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/asinf/benchmark/benchmark.native.js @@ -0,0 +1,60 @@ +/** +* @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/base/randu' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var asinf = tryRequire( resolve( __dirname, './../lib/native.js' ) ); +var opts = { + 'skip': ( asinf instanceof Error ) +}; + + +// MAIN // + +bench( pkg+'::native', opts, function benchmark( b ) { + var x; + var y; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + x = ( randu() * 2.0 ) - 1.0; + y = asinf( x ); + if ( isnanf( y ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( y ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/math/base/special/asinf/benchmark/c/native/Makefile b/lib/node_modules/@stdlib/math/base/special/asinf/benchmark/c/native/Makefile new file mode 100644 index 000000000000..f69e9da2b4d3 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/asinf/benchmark/c/native/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2024 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := benchmark.out + + +# RULES # + +#/ +# Compiles source files. +# +# @param {string} [C_COMPILER] - C compiler (e.g., `gcc`) +# @param {string} [CFLAGS] - C compiler options +# @param {(string|void)} [fPIC] - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} [INCLUDE] - list of includes (e.g., `-I /foo/bar -I /beep/boop/include`) +# @param {string} [SOURCE_FILES] - list of source files +# @param {string} [LIBPATH] - list of library paths (e.g., `-L /foo/bar -L /beep/boop`) +# @param {string} [LIBRARIES] - list of libraries (e.g., `-lopenblas -lpthread`) +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler (e.g., `gcc`) +# @param {string} CFLAGS - C compiler options +# @param {(string|void)} fPIC - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} INCLUDE - list of includes (e.g., `-I /foo/bar`) +# @param {string} SOURCE_FILES - list of source files +# @param {string} LIBPATH - list of library paths (e.g., `-L /foo/bar`) +# @param {string} LIBRARIES - list of libraries (e.g., `-lopenblas`) +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) $(fPIC) $(INCLUDE) -o $@ $(SOURCE_FILES) $< $(LIBPATH) -lm $(LIBRARIES) + +#/ +# Runs compiled benchmarks. +# +# @example +# make run +#/ +run: $(c_targets) + $(QUIET) ./$< + +.PHONY: run + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/math/base/special/asinf/benchmark/c/native/benchmark.c b/lib/node_modules/@stdlib/math/base/special/asinf/benchmark/c/native/benchmark.c new file mode 100644 index 000000000000..44fbb4e1dc04 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/asinf/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. +*/ + +/** +* Benchmark `asinf`. +*/ +#include "stdlib/math/base/special/asinf.h" +#include +#include +#include +#include +#include + +#define NAME "asinf" +#define ITERATIONS 1000000 +#define REPEATS 3 + +/** +* Prints the TAP version. +*/ +void print_version() { + printf( "TAP version 13\n" ); +} + +/** +* Prints the TAP summary. +* +* @param total total number of tests +* @param passing total number of passing tests +*/ +void print_summary( int total, int passing ) { + printf( "#\n" ); + printf( "1..%d\n", total ); // TAP plan + printf( "# total %d\n", total ); + printf( "# pass %d\n", passing ); + printf( "#\n" ); + printf( "# ok\n" ); +} + +/** +* Prints benchmarks results. +* +* @param elapsed elapsed time in seconds +*/ +void print_results( double elapsed ) { + double rate = (double)ITERATIONS / elapsed; + printf( " ---\n" ); + printf( " iterations: %d\n", ITERATIONS ); + printf( " elapsed: %0.9f\n", elapsed ); + printf( " rate: %0.9f\n", rate ); + printf( " ...\n" ); +} + +/** +* Returns a clock time. +* +* @return clock time +*/ +double tic() { + struct timeval now; + gettimeofday( &now, NULL ); + return (double)now.tv_sec + (double)now.tv_usec/1.0e6; +} + +/** +* Generates a random number on the interval [0,1]. +* +* @return random number +*/ +float rand_float() { + int r = rand(); + return (float)r / ( (float)RAND_MAX + 1.0f ); +} + +/** +* Runs a benchmark. +* +* @return elapsed time in seconds +*/ +double benchmark() { + double elapsed; + double t; + float x; + float y; + int i; + + t = tic(); + for ( i = 0; i < ITERATIONS; i++ ) { + x = ( 2.0f * rand_float() ) - 1.0f; + y = stdlib_base_asinf( x ); + if ( y != y ) { + printf( "should not return NaN\n" ); + break; + } + } + elapsed = tic() - t; + if ( y != y ) { + printf( "should not return NaN\n" ); + } + return elapsed; +} + +/** +* Main execution sequence. +*/ +int main( void ) { + double elapsed; + int i; + + // Use the current time to seed the random number generator: + srand( time( NULL ) ); + + print_version(); + for ( i = 0; i < REPEATS; i++ ) { + printf( "# c::native::%s\n", NAME ); + elapsed = benchmark(); + print_results( elapsed ); + printf( "ok %d benchmark finished\n", i+1 ); + } + print_summary( REPEATS, REPEATS ); +} diff --git a/lib/node_modules/@stdlib/math/base/special/asinf/binding.gyp b/lib/node_modules/@stdlib/math/base/special/asinf/binding.gyp new file mode 100644 index 000000000000..ec3992233442 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/asinf/binding.gyp @@ -0,0 +1,170 @@ +# @license Apache-2.0 +# +# Copyright (c) 2024 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A `.gyp` file for building a Node.js native add-on. +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # List of files to include in this file: + 'includes': [ + './include.gypi', + ], + + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Target name should match the add-on export name: + 'addon_target_name%': 'addon', + + # Set variables based on the host OS: + 'conditions': [ + [ + 'OS=="win"', + { + # Define the object file suffix: + 'obj': 'obj', + }, + { + # Define the object file suffix: + 'obj': 'o', + } + ], # end condition (OS=="win") + ], # end conditions + }, # end variables + + # Define compile targets: + 'targets': [ + + # Target to generate an add-on: + { + # The target name should match the add-on export name: + 'target_name': '<(addon_target_name)', + + # Define dependencies: + 'dependencies': [], + + # Define directories which contain relevant include headers: + 'include_dirs': [ + # Local include directory: + '<@(include_dirs)', + ], + + # List of source files: + 'sources': [ + '<@(src_files)', + ], + + # Settings which should be applied when a target's object files are used as linker input: + 'link_settings': { + # Define libraries: + 'libraries': [ + '<@(libraries)', + ], + + # Define library directories: + 'library_dirs': [ + '<@(library_dirs)', + ], + }, + + # C/C++ compiler flags: + 'cflags': [ + # Enable commonly used warning options: + '-Wall', + + # Aggressive optimization: + '-O3', + ], + + # C specific compiler flags: + 'cflags_c': [ + # Specify the C standard to which a program is expected to conform: + '-std=c99', + ], + + # C++ specific compiler flags: + 'cflags_cpp': [ + # Specify the C++ standard to which a program is expected to conform: + '-std=c++11', + ], + + # Linker flags: + 'ldflags': [], + + # Apply conditions based on the host OS: + 'conditions': [ + [ + 'OS=="mac"', + { + # Linker flags: + 'ldflags': [ + '-undefined dynamic_lookup', + '-Wl,-no-pie', + '-Wl,-search_paths_first', + ], + }, + ], # end condition (OS=="mac") + [ + 'OS!="win"', + { + # C/C++ flags: + 'cflags': [ + # Generate platform-independent code: + '-fPIC', + ], + }, + ], # end condition (OS!="win") + ], # end conditions + }, # end target <(addon_target_name) + + # Target to copy a generated add-on to a standard location: + { + 'target_name': 'copy_addon', + + # Declare that the output of this target is not linked: + 'type': 'none', + + # Define dependencies: + 'dependencies': [ + # Require that the add-on be generated before building this target: + '<(addon_target_name)', + ], + + # Define a list of actions: + 'actions': [ + { + 'action_name': 'copy_addon', + 'message': 'Copying addon...', + + # Explicitly list the inputs in the command-line invocation below: + 'inputs': [], + + # Declare the expected outputs: + 'outputs': [ + '<(addon_output_dir)/<(addon_target_name).node', + ], + + # Define the command-line invocation: + 'action': [ + 'cp', + '<(PRODUCT_DIR)/<(addon_target_name).node', + '<(addon_output_dir)/<(addon_target_name).node', + ], + }, + ], # end actions + }, # end target copy_addon + ], # end targets +} diff --git a/lib/node_modules/@stdlib/math/base/special/asinf/docs/repl.txt b/lib/node_modules/@stdlib/math/base/special/asinf/docs/repl.txt new file mode 100644 index 000000000000..581c0e41ea72 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/asinf/docs/repl.txt @@ -0,0 +1,26 @@ + +{{alias}}( x ) + Computes the arcsine of a single-precision floating-point number. + + Parameters + ---------- + x: number + Input value. + + Returns + ------- + y: number + Arcsine (in radians). + + Examples + -------- + > var y = {{alias}}( 0.0 ) + 0.0 + > y = {{alias}}( -3.14/6.0 ) + ~-0.551 + > y = {{alias}}( NaN ) + NaN + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/math/base/special/asinf/docs/types/index.d.ts b/lib/node_modules/@stdlib/math/base/special/asinf/docs/types/index.d.ts new file mode 100644 index 000000000000..702d861758ff --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/asinf/docs/types/index.d.ts @@ -0,0 +1,48 @@ +/* +* @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 arcsine of a single-precision floating-point number. +* +* @param x - input value +* @returns arcsine (in radians) +* +* @example +* var v = asinf( 0.0 ); +* // returns 0.0 +* +* @example +* var v = asinf( 3.14/4.0 ); +* // returns ~0.903 +* +* @example +* var v = asinf( -3.14/6.0 ); +* // returns ~-0.551 +* +* @example +* var v = asinf( NaN ); +* // returns NaN +*/ +declare function asinf( x: number ): number; + + +// EXPORTS // + +export = asinf; diff --git a/lib/node_modules/@stdlib/math/base/special/asinf/docs/types/test.ts b/lib/node_modules/@stdlib/math/base/special/asinf/docs/types/test.ts new file mode 100644 index 000000000000..a36aba524bea --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/asinf/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 asinf = require( './index' ); + + +// TESTS // + +// The function returns a number... +{ + asinf( 8 ); // $ExpectType number +} + +// The compiler throws an error if the function is provided a value other than a number... +{ + asinf( true ); // $ExpectError + asinf( false ); // $ExpectError + asinf( null ); // $ExpectError + asinf( undefined ); // $ExpectError + asinf( '5' ); // $ExpectError + asinf( [] ); // $ExpectError + asinf( {} ); // $ExpectError + asinf( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided insufficient arguments... +{ + asinf(); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/math/base/special/asinf/examples/c/Makefile b/lib/node_modules/@stdlib/math/base/special/asinf/examples/c/Makefile new file mode 100644 index 000000000000..6aed70daf167 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/asinf/examples/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2024 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := example.out + + +# RULES # + +#/ +# Compiles source files. +# +# @param {string} [C_COMPILER] - C compiler (e.g., `gcc`) +# @param {string} [CFLAGS] - C compiler options +# @param {(string|void)} [fPIC] - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} [INCLUDE] - list of includes (e.g., `-I /foo/bar -I /beep/boop/include`) +# @param {string} [SOURCE_FILES] - list of source files +# @param {string} [LIBPATH] - list of library paths (e.g., `-L /foo/bar -L /beep/boop`) +# @param {string} [LIBRARIES] - list of libraries (e.g., `-lopenblas -lpthread`) +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler (e.g., `gcc`) +# @param {string} CFLAGS - C compiler options +# @param {(string|void)} fPIC - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} INCLUDE - list of includes (e.g., `-I /foo/bar`) +# @param {string} SOURCE_FILES - list of source files +# @param {string} LIBPATH - list of library paths (e.g., `-L /foo/bar`) +# @param {string} LIBRARIES - list of libraries (e.g., `-lopenblas`) +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) $(fPIC) $(INCLUDE) -o $@ $(SOURCE_FILES) $< $(LIBPATH) -lm $(LIBRARIES) + +#/ +# Runs compiled examples. +# +# @example +# make run +#/ +run: $(c_targets) + $(QUIET) ./$< + +.PHONY: run + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/math/base/special/asinf/examples/c/example.c b/lib/node_modules/@stdlib/math/base/special/asinf/examples/c/example.c new file mode 100644 index 000000000000..f0bc9d53803d --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/asinf/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/asinf.h" +#include + +int main( void ) { + const float x[] = { -1.0f, -0.78f, -0.56f, -0.33f, -0.11f, 0.11f, 0.33f, 0.56f, 0.78f, 1.0f }; + + float v; + int i; + for ( i = 0; i < 10; i++ ) { + v = stdlib_base_asinf( x[ i ] ); + printf( "asin(%f) = %f\n", x[ i ], v ); + } +} diff --git a/lib/node_modules/@stdlib/math/base/special/asinf/examples/index.js b/lib/node_modules/@stdlib/math/base/special/asinf/examples/index.js new file mode 100644 index 000000000000..c63e9b21379d --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/asinf/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 asinf = require( './../lib' ); + +var x = linspace( -1.0, 1.0, 100 ); + +var i; +for ( i = 0; i < x.length; i++ ) { + console.log( 'asinf(%d) = %d', x[ i ], asinf( x[ i ] ) ); +} diff --git a/lib/node_modules/@stdlib/math/base/special/asinf/include.gypi b/lib/node_modules/@stdlib/math/base/special/asinf/include.gypi new file mode 100644 index 000000000000..575cb043c0bf --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/asinf/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.5\\), it is transformed by the identity +* +* ```tex +* \operatorname{asinf}(x) = \frac{\pi}{2} - 2 \operatorname{asinf}( \sqrt{ (1-x)/2 } ) +* ``` +* +* ## Notes +* +* - Relative error: +* +* | arithmetic | domain | # trials | peak | rms | +* |:-----------|:-------|:---------|:--------|:--------| +* | IEEE | -1, 1 | 10^5 | 2.5e-7 | 5.0e-8 | +* +* @param {number} x - input value +* @returns {number} arcsine (in radians) +* +* @example +* var v = asinf( 0.0 ); +* // returns 0.0 +* +* @example +* var v = asinf( 3.14/4.0 ); +* // returns ~0.903 +* +* @example +* var v = asinf( -3.14/6.0 ); +* // returns ~-0.551 +* +* @example +* var v = asinf( NaN ); +* // returns NaN +*/ +function asinf( x ) { + var flag; + var sgn; + var ax; + var z; + + if ( isnanf( x ) ) { + return NaN; + } + x = float64ToFloat32( x ); + if ( x > 0.0 ) { + sgn = 1; + ax = x; + } else { + sgn = -1; + ax = -x; + } + if ( ax > 1.0 ) { + return NaN; + } + if ( ax < 1.0e-4 ) { + return x; + } + if ( ax > 0.5 ) { + z = float64ToFloat32( 0.5 * float64ToFloat32( 1.0 - ax ) ); + ax = sqrtf( z ); + flag = 1; + } else { + z = float64ToFloat32( ax * ax ); + flag = 0; + } + z = float64ToFloat32( float64ToFloat32( polyp( z ) * float64ToFloat32( z * ax ) ) + ax ); // eslint-disable-line max-len + + if ( flag !== 0 ) { + z = float64ToFloat32( z + z ); + z = float64ToFloat32( PI02F - z ); + } + if ( sgn < 0 ) { + z = -z; + } + return z; +} + + +// EXPORTS // + +module.exports = asinf; diff --git a/lib/node_modules/@stdlib/math/base/special/asinf/lib/native.js b/lib/node_modules/@stdlib/math/base/special/asinf/lib/native.js new file mode 100644 index 000000000000..85a05b38c1b5 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/asinf/lib/native.js @@ -0,0 +1,58 @@ +/** +* @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 addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Computes the arcsine of a single-precision floating-point number. +* +* @private +* @param {number} x - input value +* @returns {number} arcsine (in radians) +* +* @example +* var v = asinf( 0.0 ); +* // returns 0.0 +* +* @example +* var v = asinf( 3.14/4.0 ); +* // returns ~0.903 +* +* @example +* var v = asinf( -3.14/6.0 ); +* // returns ~-0.551 +* +* @example +* var v = asinf( NaN ); +* // returns NaN +*/ +function asinf( x ) { + return addon( x ); +} + + +// EXPORTS // + +module.exports = asinf; diff --git a/lib/node_modules/@stdlib/math/base/special/asinf/lib/poly_p.js b/lib/node_modules/@stdlib/math/base/special/asinf/lib/poly_p.js new file mode 100644 index 000000000000..852b6a7134a7 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/asinf/lib/poly_p.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. +*/ + +/* This is a generated file. Do not edit directly. */ +'use strict'; + +// MODULES // + +var float64ToFloat32 = require( '@stdlib/number/float64/base/to-float32' ); + + +// MAIN // + +/** +* Evaluates a polynomial. +* +* ## Notes +* +* - The implementation uses [Horner's rule][horners-method] for efficient computation. +* +* [horners-method]: https://en.wikipedia.org/wiki/Horner%27s_method +* +* @private +* @param {number} x - value at which to evaluate the polynomial +* @returns {number} evaluated polynomial +*/ +function evalpoly( x ) { + if ( x === 0.0 ) { + return 0.16666752099990845; + } + return float64ToFloat32(0.16666752099990845 + float64ToFloat32(x * float64ToFloat32(0.07495300471782684 + float64ToFloat32(x * float64ToFloat32(0.04547002539038658 + float64ToFloat32(x * float64ToFloat32(0.024181311950087547 + float64ToFloat32(x * 0.04216320067644119)))))))); // eslint-disable-line max-len +} + + +// EXPORTS // + +module.exports = evalpoly; diff --git a/lib/node_modules/@stdlib/math/base/special/asinf/manifest.json b/lib/node_modules/@stdlib/math/base/special/asinf/manifest.json new file mode 100644 index 000000000000..3c8dedd0c2a0 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/asinf/manifest.json @@ -0,0 +1,78 @@ +{ + "options": { + "task": "build" + }, + "fields": [ + { + "field": "src", + "resolve": true, + "relative": true + }, + { + "field": "include", + "resolve": true, + "relative": true + }, + { + "field": "libraries", + "resolve": false, + "relative": false + }, + { + "field": "libpath", + "resolve": true, + "relative": false + } + ], + "confs": [ + { + "task": "build", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/math/base/napi/unary", + "@stdlib/math/base/assert/is-nanf", + "@stdlib/math/base/special/sqrtf", + "@stdlib/constants/float32/half-pi" + ] + }, + { + "task": "benchmark", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/math/base/assert/is-nanf", + "@stdlib/math/base/special/sqrtf", + "@stdlib/constants/float32/half-pi" + ] + }, + { + "task": "examples", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/math/base/assert/is-nanf", + "@stdlib/math/base/special/sqrtf", + "@stdlib/constants/float32/half-pi" + ] + } + ] +} diff --git a/lib/node_modules/@stdlib/math/base/special/asinf/package.json b/lib/node_modules/@stdlib/math/base/special/asinf/package.json new file mode 100644 index 000000000000..a0c8d2764682 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/asinf/package.json @@ -0,0 +1,70 @@ +{ + "name": "@stdlib/math/base/special/asinf", + "version": "0.0.0", + "description": "Compute the arcsine of a single-precision floating-point number.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "gypfile": true, + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "include": "./include", + "lib": "./lib", + "scripts": "./scripts", + "src": "./src", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "math.asin", + "asinf", + "arcsine", + "sine", + "inverse", + "trig", + "trigonometry", + "radians", + "angle" + ] +} diff --git a/lib/node_modules/@stdlib/math/base/special/asinf/scripts/evalpoly.js b/lib/node_modules/@stdlib/math/base/special/asinf/scripts/evalpoly.js new file mode 100644 index 000000000000..633847d3e39a --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/asinf/scripts/evalpoly.js @@ -0,0 +1,122 @@ +/** +* @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. +*/ + +/* +* This script compiles modules for evaluating polynomial functions. If any polynomial coefficients change, this script should be rerun to update the compiled files. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var readFileSync = require( '@stdlib/fs/read-file' ).sync; +var writeFileSync = require( '@stdlib/fs/write-file' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var compile = require( '@stdlib/math/base/tools/evalpoly-compile' ); +var compileC = require( '@stdlib/math/base/tools/evalpoly-compile-c' ); +var substringBefore = require( '@stdlib/string/substring-before' ); +var substringAfter = require( '@stdlib/string/substring-after' ); +var format = require( '@stdlib/string/format' ); + + +// VARIABLES // + +// Polynomial coefficients ordered in ascending degree... +var P = [ + 1.6666752422E-1, + 7.4953002686E-2, + 4.5470025998E-2, + 2.4181311049E-2, + 4.2163199048E-2 +]; + +// Header to add to output files: +var header = licenseHeader( 'Apache-2.0', 'js', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' +}); +header += '\n/* This is a generated file. Do not edit directly. */\n'; + + +// FUNCTIONS // + +/** +* Inserts a compiled function into file content. +* +* @private +* @param {string} text - source content +* @param {string} id - function identifier +* @param {string} str - function string +* @returns {string} updated content +*/ +function insert( text, id, str ) { + var before; + var after; + var begin; + var end; + + begin = '// BEGIN: '+id; + end = '// END: '+id; + + before = substringBefore( text, begin ); + after = substringAfter( text, end ); + + return format( '%s// BEGIN: %s\n\n%s\n%s%s', before, id, str, end, after ); +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var fpath; + var copts; + var opts; + var file; + var str; + + opts = { + 'dtype': 'float32', + 'encoding': 'utf8' + }; + + fpath = resolve( __dirname, '..', 'lib', 'poly_p.js' ); + str = header + compile( P, opts ); + writeFileSync( fpath, str, opts ); + + copts = { + 'dtype': 'float', + 'name': 'poly_p' + }; + + fpath = resolve( __dirname, '..', 'src', 'main.c' ); + file = readFileSync( fpath, opts ); + + str = compileC( P, copts ); + file = insert( file, copts.name, str ); + + writeFileSync( fpath, file, opts ); +} + +main(); diff --git a/lib/node_modules/@stdlib/math/base/special/asinf/src/Makefile b/lib/node_modules/@stdlib/math/base/special/asinf/src/Makefile new file mode 100644 index 000000000000..bcf18aa46655 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/asinf/src/Makefile @@ -0,0 +1,70 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2024 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + + +# RULES # + +#/ +# Removes generated files for building an add-on. +# +# @example +# make clean-addon +#/ +clean-addon: + $(QUIET) -rm -f *.o *.node + +.PHONY: clean-addon + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: clean-addon + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/math/base/special/asinf/src/addon.c b/lib/node_modules/@stdlib/math/base/special/asinf/src/addon.c new file mode 100644 index 000000000000..c93b670e488d --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/asinf/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/asinf.h" +#include "stdlib/math/base/napi/unary.h" + +// cppcheck-suppress shadowFunction +STDLIB_MATH_BASE_NAPI_MODULE_F_F( stdlib_base_asinf ) diff --git a/lib/node_modules/@stdlib/math/base/special/asinf/src/main.c b/lib/node_modules/@stdlib/math/base/special/asinf/src/main.c new file mode 100644 index 000000000000..cfa6c7df3de2 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/asinf/src/main.c @@ -0,0 +1,131 @@ +/** +* @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. +* +* +* ## Notice +* +* The original C code, long comment, copyright, license, and constants are from [Cephes]{@link http://www.netlib.org/cephes}. The implementation follows the original, but has been modified according to project conventions. +* +* ```text +* Copyright 1984, 1995, 2000 by Stephen L. Moshier +* +* Some software in this archive may be from the book _Methods and Programs for Mathematical Functions_ (Prentice-Hall or Simon & Schuster International, 1989) or from the Cephes Mathematical Library, a commercial product. In either event, it is copyrighted by the author. What you see here may be used freely but it comes with no support or guarantee. +* +* Stephen L. Moshier +* moshier@na-net.ornl.gov +* ``` +*/ + +#include "stdlib/math/base/special/asinf.h" +#include "stdlib/math/base/assert/is_nanf.h" +#include "stdlib/math/base/special/sqrtf.h" +#include "stdlib/constants/float32/half_pi.h" +#include + +/* Begin auto-generated functions. The following functions are auto-generated. Do not edit directly. */ + +// BEGIN: poly_p + +/** +* Evaluates a polynomial. +* +* ## Notes +* +* - The implementation uses [Horner's rule][horners-method] for efficient computation. +* +* [horners-method]: https://en.wikipedia.org/wiki/Horner%27s_method +* +* @param x value at which to evaluate the polynomial +* @return evaluated polynomial +*/ +static float poly_p( const float x ) { + return 0.16666752422f + (x * (0.074953002686f + (x * (0.045470025998f + (x * (0.024181311049f + (x * 0.042163199048f))))))); +} + +// END: poly_p + +/* End auto-generated functions. */ + +/** +* Computes the arcsine of a single-precision floating-point number. +* +* ## Method +* +* - A polynomial of the form +* +* ```tex +* x + x^3 P(x^2) +* ``` +* +* is used for \\(\|x\|\\) in the interval \\(\[0, 0.5\]\\). If \\(\|x\| > 0.5\\), it is transformed by the identity +* +* ```tex +* \operatorname{asinf}(x) = \frac{\pi}{2} - 2 \operatorname{asinf}( \sqrt{ (1-x)/2 } ) +* ``` +* +* ## Notes +* +* - Relative error: +* +* | arithmetic | domain | # trials | peak | rms | +* |:-----------|:-------|:---------|:--------|:--------| +* | IEEE | -1, 1 | 10^5 | 2.5e-7 | 5.0e-8 | +* +* @param x input value +* @return arcsine (in radians) +* +* @example +* float out = stdlib_base_asinf( 0.0f ); +* // returns 0.0f +*/ +float stdlib_base_asinf( const float x ) { + int32_t flag; + int32_t sgn; + float ax; + float z; + + if ( stdlib_base_is_nanf( x ) ) { + return 0.0f / 0.0f; // NaN + } + if ( x > 0.0f ) { + sgn = 1; + ax = x; + } else { + sgn = 0; + ax = -x; + } + if ( ax > 1.0f ) { + return 0.0f / 0.0f; // NaN + } + if ( ax < 1.0e-4f ) { + return x; + } + if ( ax > 0.5f ) { + z = 0.5f * ( 1.0f - ax ); + ax = stdlib_base_sqrtf( z ); + flag = 1; + } else { + z = ax * ax; + flag = 0; + } + z = ( poly_p( z ) * z * ax ) + ax; + if ( flag != 0 ) { + z += z; + z = STDLIB_CONSTANT_FLOAT32_HALF_PI - z; + } + return ( sgn == 1 ) ? z : -z; +} diff --git a/lib/node_modules/@stdlib/math/base/special/asinf/test/fixtures/julia/REQUIRE b/lib/node_modules/@stdlib/math/base/special/asinf/test/fixtures/julia/REQUIRE new file mode 100644 index 000000000000..308c3be89c85 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/asinf/test/fixtures/julia/REQUIRE @@ -0,0 +1,2 @@ +julia 1.5 +JSON 0.21 diff --git a/lib/node_modules/@stdlib/math/base/special/asinf/test/fixtures/julia/data.json b/lib/node_modules/@stdlib/math/base/special/asinf/test/fixtures/julia/data.json new file mode 100644 index 000000000000..c35d7f3250bb --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/asinf/test/fixtures/julia/data.json @@ -0,0 +1 @@ +{"expected":[-1.5707963267948966,-1.5260935891346763,-1.5075718428025136,-1.4933560117250577,-1.4813684991694585,-1.4708046382537716,-1.4612517824148195,-1.4524648214055167,-1.444284065703959,-1.4365986038030125,-1.4293276883802393,-1.4224103667424246,-1.41579928858909,-1.409456801785667,-1.4033523806100368,-1.3974608695309416,-1.3917612470903578,-1.3862357331782005,-1.3808691298427815,-1.3756483250462017,-1.3705619126848532,-1.365599897221115,-1.36075346097934,-1.3560147785854428,-1.3513768673776474,-1.346833465616388,-1.3423789324287758,-1.3380081649271909,-1.3337165290310513,-1.3294998013205406,-1.3253541198454752,-1.3212759422593074,-1.3172620099876864,-1.3133093174014112,-1.3094150851651944,-1.3055767370910711,-1.3017918799491555,-1.2980582857866687,-1.294373876384605,-1.2907367095444235,-1.287144966948134,-1.283596943376638,-1.2800910371050866,-1.2766257413219422,-1.2731996364414642,-1.269811383198515,-1.266459716430528,-1.263143439464876,-1.259861419041125,-1.2566125807071742,-1.2533959046363168,-1.2502104218191397,-1.2470552105900032,-1.2439293934528648,-1.2408321341755149,-1.2377626351249937,-1.2347201348201717,-1.2317039056802441,-1.2287132519503123,-1.2257475077873226,-1.2228060354914643,-1.2198882238697495,-1.2169934867198935,-1.2141212614238637,-1.211271007641555,-1.2084422060960192,-1.2056343574425212,-1.202846981214467,-1.2000796148399067,-1.1973318127229282,-1.1946031453847792,-1.191893198660044,-1.1892015729436234,-1.1865278824846406,-1.183871754723759,-1.1812328296706878,-1.178610759318937,-1.1760052070951352,-1.1734158473404488,-1.1708423648218431,-1.1682844542711144,-1.1657418199497878,-1.163214175238133,-1.1607012422466765,-1.1582027514487312,-1.1557184413325685,-1.153248058071959,-1.150791355213921,-1.148348093382581,-1.1459180399981466,-1.1435009690100613,-1.141096660643472,-1.138704901158211,-1.136325482619542,-1.133958202679977,-1.1316028643715241,-1.1292592759077489,-1.1269272504951047,-1.1246066061529973,-1.1222971655420966,-1.1199987558004396,-1.1177112083868965,-1.1154343589316003,-1.1131680470929612,-1.1109121164209215,-1.1086664142261164,-1.106430791454633,-1.1042051025680784,-1.1019892054286853,-1.099782961189197,-1.09758623418729,-1.0953988918443147,-1.0932208045681295,-1.0910518456598368,-1.0888918912242287,-1.0867408200837618,-1.0845985136958938,-1.0824648560736225,-1.08033973370908,-1.078223035500034,-1.0761146526791645,-1.0740144787459958,-1.0719224094013478,-1.0698383424842102,-1.0677621779109194,-1.0656938176165434,-1.0636331654983702,-1.0615801273614163,-1.0595346108658645,-1.057496525476343,-1.0554657824129778,-1.053442294604134,-1.051425976640781,-1.0494167447324105,-1.047414516664447,-1.0454192117570842,-1.0434307508254956,-1.0414490561413576,-1.0394740513956384,-1.0375056616625966,-1.0355438133649462,-1.0335884342401398,-1.0316394533077282,-1.0296968008377507,-1.027760408320124,-1.0258302084349817,-1.0239061350239393,-1.0219881230622394,-1.0200761086317527,-1.0181700288947968,-1.0162698220687472,-1.0143754274014085,-1.0124867851471195,-1.0106038365435648,-1.0087265237892695,-1.0068547900217493,-1.004988579296296,-1.003127836565375,-1.0012725076586113,-0.9994225392633461,-0.997577878905745,-0.9957384749324355,-0.9939042764926573,-0.99207523352091,-0.9902512967200783,-0.9884324175450204,-0.9866185481866041,-0.9848096415561756,-0.9830056512704457,-0.9812065316367824,-0.9794122376388932,-0.9776227249228884,-0.9758379497837084,-0.9740578691519087,-0.9722824405807872,-0.9705116222338438,-0.9687453728725639,-0.9669836518445135,-0.9652264190717365,-0.9634736350394455,-0.9617252607849983,-0.9599812578871472,-0.9582415884555577,-0.9565062151205861,-0.9547751010233079,-0.9530482098057897,-0.9513255056015988,-0.9496069530265422,-0.9478925171696273,-0.94618216358424,-0.9444758582795338,-0.9427735677120198,-0.9410752587773581,-0.9393808988023402,-0.9376904555370577,-0.9360038971472538,-0.9343211922068511,-0.9326423096906505,-0.9309672189671974,-0.9292958897918092,-0.9276282922997624,-0.9259643969996302,-0.9243041747667716,-0.9226475968369656,-0.920994634800184,-0.9193452605945045,-0.9176994465001558,-0.9160571651336941,-0.9144183894423041,-0.9127830926982257,-0.9111512484932993,-0.9095228307336282,-0.9078978136343552,-0.9062761717145504,-0.9046578797922058,-0.9030429129793365,-0.9014312466771839,-0.899822856571519,-0.8982177186280424,-0.8966158090878809,-0.8950171044631753,-0.8934215815327586,-0.8918292173379226,-0.8902399891782711,-0.8886538746076547,-0.8870708514301892,-0.8854908976963537,-0.8839139916991645,-0.882340111970427,-0.8807692372770605,-0.8792013466174959,-0.8776364192181428,-0.8760744345299268,-0.8745153722248933,-0.8729592121928769,-0.8714059345382343,-0.8698555195766425,-0.8683079478319538,-0.8667632000331138,-0.8652212571111373,-0.8636821001961392,-0.8621457106144241,-0.860612069885627,-0.8590811597199106,-0.8575529620152113,-0.856027458854538,-0.8545046325033211,-0.8529844654068071,-0.8514669401875039,-0.8499520396426713,-0.8484397467418556,-0.8469300446244707,-0.8454229165974212,-0.8439183461327692,-0.8424163168654406,-0.840916812590974,-0.8394198172633089,-0.8379253149926122,-0.8364332900431429,-0.8349437268311553,-0.8334566099228361,-0.8319719240322805,-0.8304896540195004,-0.8290097848884682,-0.8275323017851943,-0.8260571899958359,-0.8245844349448406,-0.823114022193118,-0.8216459374362453,-0.8201801665027013,-0.8187166953521301,-0.8172555100736338,-0.8157965968840953,-0.8143399421265254,-0.8128855322684401,-0.8114333539002636,-0.8099833937337579,-0.8085356386004763,-0.8070900754502444,-0.8056466913496645,-0.8042054734806439,-0.802766409138947,-0.8013294857327724,-0.799894690781349,-0.798462011913558,-0.7970314368665755,-0.7956029534845354,-0.794176549717215,-0.7927522136187405,-0.7913299333463135,-0.7899096971589553,-0.7884914934162732,-0.7870753105772447,-0.7856611371990196,-0.7842489619357428,-0.7828387735373927,-0.7814305608486393,-0.7800243128077176,-0.7786200184453205,-0.7772176668835068,-0.7758172473346256,-0.774418749100258,-0.7730221615701733,-0.7716274742213022,-0.7702346766167231,-0.7688437584046667,-0.7674547093175317,-0.7660675191709174,-0.7646821778626701,-0.7632986753719423,-0.7619170017582668,-0.760537147160644,-0.7591591017966425,-0.7577828559615116,-0.7564084000273084,-0.7550357244420359,-0.7536648197287945,-0.752295676484944,-0.7509282853812803,-0.7495626371612203,-0.7481987226400011,-0.7468365327038894,-0.7454760583094013,-0.7441172904825348,-0.7427602203180107,-0.7414048389785265,-0.7400511376940186,-0.7386991077609356,-0.7373487405415221,-0.7360000274631112,-0.734652960017427,-0.733307529759898,-0.7319637283089774,-0.7306215473454748,-0.7292809786118953,-0.7279420139117897,-0.7266046451091099,-0.7252688641275769,-0.7239346629500545,-0.7226020336179326,-0.7212709682305176,-0.7199414589444331,-0.7186134979730254,-0.717287077585779,-0.7159621901077402,-0.7146388279189457,-0.7133169834538613,-0.7119966492008262,-0.7106778177015058,-0.7093604815503506,-0.7080446333940619,-0.7067302659310658,-0.7054173719109926,-0.7041059441341628,-0.7027959754510815,-0.7014874587619361,-0.7001803870161036,-0.6988747532116618,-0.6975705503949083,-0.6962677716598841,-0.694966410147904,-0.6936664590470933,-0.692367911591929,-0.6910707610627879,-0.6897750007854997,-0.6884806241309055,-0.6871876245144225,-0.6858959953956133,-0.6846057302777607,-0.6833168227074478,-0.682029266274143,-0.6807430546097908,-0.6794581813884063,-0.6781746403256755,-0.6768924251785609,-0.6756115297449098,-0.6743319478630696,-0.6730536734115071,-0.6717767003084312,-0.670501022511421,-0.6692266340170585,-0.667953528860566,-0.6666817011154459,-0.6654111448931265,-0.6641418543426121,-0.6628738236501358,-0.6616070470388172,-0.6603415187683247,-0.6590772331345401,-0.6578141844692287,-0.6565523671397124,-0.6552917755485466,-0.6540324041332011,-0.6527742473657442,-0.6515172997525315,-0.6502615558338964,-0.6490070101838461,-0.6477536574097598,-0.6465014921520906,-0.645250509084071,-0.6440007029114216,-0.6427520683720631,-0.6415046002358311,-0.6402582933041947,-0.6390131424099786,-0.6377691424170868,-0.6365262882202303,-0.6352845747446592,-0.6340439969458941,-0.6328045498094647,-0.6315662283506485,-0.6303290276142127,-0.6290929426741603,-0.6278579686334778,-0.6266241006238851,-0.6253913338055902,-0.6241596633670441,-0.6229290845247005,-0.6216995925227766,-0.6204711826330167,-0.6192438501544598,-0.618017590413207,-0.6167923987621938,-0.6155682705809642,-0.6143452012754461,-0.6131231862777304,-0.6119022210458517,-0.6106823010635722,-0.6094634218401667,-0.6082455789102096,-0.607028767833367,-0.6058129841941872,-0.6045982236018952,-0.6033844816901903,-0.6021717541170437,-0.6009600365644993,-0.5997493247384773,-0.5985396143685782,-0.5973309012078897,-0.5961231810327957,-0.5949164496427874,-0.593710702860275,-0.5925059365304035,-0.5913021465208683,-0.5900993287217338,-0.5888974790452532,-0.5876965934256921,-0.5864966678191499,-0.5852976982033868,-0.5840996805776514,-0.5829026109625086,-0.5817064853996711,-0.5805112999518315,-0.579317050702497,-0.578123733755824,-0.5769313452364567,-0.5757398812893654,-0.5745493380796867,-0.5733597117925664,-0.5721709986330029,-0.570983194825692,-0.5697962966148742,-0.5686103002641822,-0.5674252020564915,-0.5662409982937705,-0.5650576852969336,-0.5638752594056956,-0.5626937169784261,-0.5615130543920068,-0.5603332680416901,-0.5591543543409581,-0.5579763097213827,-0.5567991306324896,-0.5556228135416206,-0.5544473549337979,-0.5532727513115914,-0.5520989991949854,-0.550926095121247,-0.5497540356447961,-0.5485828173370768,-0.5474124367864288,-0.5462428905979614,-0.5450741753934283,-0.543906287811103,-0.5427392245056553,-0.5415729821480303,-0.5404075574253273,-0.5392429470406797,-0.5380791477131364,-0.5369161561775451,-0.5357539691844349,-0.5345925834999015,-0.5334319959054927,-0.5322722031980952,-0.531113202189822,-0.5299549897079021,-0.5287975625945691,-0.5276409177069527,-0.5264850519169699,-0.5253299621112189,-0.5241756451908712,-0.5230220980715673,-0.5218693176833121,-0.5207173009703712,-0.5195660448911683,-0.5184155464181838,-0.5172658025378539,-0.5161168102504706,-0.514968566570083,-0.5138210685243991,-0.512674313154688,-0.5115282975156845,-0.5103830186754925,-0.509238473715491,-0.50809465973024,-0.5069515738273872,-0.5058092131275761,-0.5046675747643538,-0.5035266558840813,-0.5023864536458429,-0.5012469652213571,-0.5001081877948885,-0.49897011856316015,-0.4978327547352662,-0.4966960935325866,-0.49556013218870076,-0.49442486794930374,-0.4932902980721218,-0.49215641982682923,-0.49102323049496593,-0.48989072736985534,-0.48875890775652364,-0.48762776897161897,-0.48649730834333155,-0.4853675232113151,-0.4842384109266076,-0.483109968851554,-0.48198219435972905,-0.48085508483586026,-0.47972863767575274,-0.4786028502862131,-0.4774777200849755,-0.4763532445006274,-0.4752294209725357,-0.4741062469507745,-0.47298371989605265,-0.47186183727964187,-0.470740596583306,-0.4696199952992304,-0.4685000309299519,-0.4673807009882897,-0.4662620029972764,-0.46514393449008967,-0.46402649300998483,-0.46290967611022754,-0.4617934813540273,-0.46067790631447103,-0.45956294857445806,-0.4584486057266346,-0.45733487537332956,-0.4562217551264905,-0.45510924260761987,-0.4539973354477125,-0.4528860312871925,-0.4517753277758519,-0.45066522257278857,-0.44955571334634564,-0.4484467977740505,-0.44733847354255524,-0.44623073834757637,-0.4451235898938365,-0.44401702589500464,-0.4429110440736389,-0.4418056421611283,-0.4407008178976351,-0.43959656903203853,-0.43849289332187785,-0.4373897885332965,-0.43628725244098665,-0.4351852828281335,-0.4340838774863612,-0.43298303421567785,-0.4318827508244221,-0.4307830251292095,-0.4296838549548789,-0.4285852381344405,-0.42748717250902296,-0.4263896559278217,-0.42529268624804734,-0.4241962613348745,-0.4231003790613911,-0.4220050373085479,-0.42091023396510835,-0.4198159669275995,-0.4187222341002618,-0.4176290333950012,-0.4165363627313397,-0.4154442200363678,-0.41435260324469625,-0.4132615102984089,-0.4121709391470152,-0.41108088774740376,-0.40999135406379544,-0.4089023360676979,-0.40781383173785896,-0.4067258390602219,-0.4056383560278801,-0.4045513806410319,-0.4034649109069366,-0.4023789448398701,-0.401293480461081,-0.4002085157987472,-0.39912404888793257,-0.39804007777054423,-0.39695660049528975,-0.3958736151176348,-0.39479111969976155,-0.3937091123105264,-0.39262759102541916,-0.3915465539265215,-0.3904659991024662,-0.3893859246483969,-0.38830632866592735,-0.3872272092631019,-0.3861485645543557,-0.3850703926604749,-0.38399269170855815,-0.38291545983197706,-0.3818386951703382,-0.3807623958694444,-0.37968656008125656,-0.3786111859638563,-0.377536271681408,-0.3764618154041217,-0.375387815308216,-0.37431426957588126,-0.373241176395243,-0.372168533960326,-0.37109634047101747,-0.37002459413303224,-0.3689532931578762,-0.3678824357628119,-0.3668120201708228,-0.36574204461057874,-0.3646725073164013,-0.36360340652822914,-0.3625347404915844,-0.36146650745753844,-0.3603987056826778,-0.3593313334290715,-0.35826438896423707,-0.35719787056110797,-0.35613177649800065,-0.35506610505858177,-0.354000854531836,-0.352936023212034,-0.3518716093986998,-0.35080761139658,-0.34974402751561134,-0.34868085607088983,-0.3476180953826397,-0.3465557437761819,-0.345493799581904,-0.3444322611352291,-0.34337112677658604,-0.3423103948513787,-0.3412500637099563,-0.3401901317075838,-0.33913059720441174,-0.3380714585654476,-0.33701271416052614,-0.3359543623642802,-0.33489640155611244,-0.3338388301201662,-0.332781646445297,-0.3317248489250448,-0.3306684359576051,-0.3296124059458016,-0.32855675729705824,-0.3275014884233713,-0.3264465977412825,-0.32539208367185124,-0.32433794464062793,-0.32328417907762685,-0.3222307854172991,-0.3211777620985068,-0.32012510756449564,-0.31907282026286954,-0.3180208986455639,-0.31696934116881986,-0.3159181462931587,-0.3148673124833557,-0.3138168382084152,-0.312766721941545,-0.31171696216013095,-0.31066755734571255,-0.30961850598395746,-0.30856980656463684,-0.3075214575816013,-0.3064734575327558,-0.30542580492003557,-0.30437849824938223,-0.30333153603071944,-0.3022849167779292,-0.30123863900882786,-0.3001927012451431,-0.2991471020124899,-0.2981018398403474,-0.29705691326203587,-0.2960123208146935,-0.29496806103925344,-0.29392413248042143,-0.2928805336866524,-0.29183726321012876,-0.2907943196067373,-0.28975170143604745,-0.288709407261289,-0.2876674356493299,-0.2866257851706544,-0.28558445439934177,-0.2845434419130438,-0.28350274629296424,-0.2824623661238364,-0.28142229999390284,-0.2803825464948936,-0.27934310422200515,-0.27830397177387994,-0.27726514775258493,-0.27622663076359155,-0.2751884194157547,-0.2741505123212923,-0.27311290809576516,-0.27207560535805647,-0.2710386027303519,-0.2700018988381195,-0.26896549231008954,-0.2679293817782351,-0.26689356587775226,-0.26585804324704015,-0.2648228125276819,-0.263787872364425,-0.2627532214051623,-0.26171885830091235,-0.26068478170580067,-0.2596509902770409,-0.2586174826749154,-0.257584257562757,-0.25655131360693006,-0.25551864947681185,-0.25448626384477435,-0.25345415538616534,-0.2524223227792906,-0.25139076470539556,-0.2503594798486471,-0.2493284668961155,-0.2482977245377568,-0.24726725146639464,-0.2462370463777026,-0.24520710797018683,-0.24417743494516805,-0.2431480260067644,-0.24211887986187397,-0.24108999522015734,-0.2400613707940207,-0.23903300529859844,-0.23800489745173622,-0.23697704597397395,-0.23594944958852912,-0.2349221070212797,-0.2338950170007477,-0.23286817825808237,-0.23184158952704378,-0.23081524954398633,-0.22978915704784228,-0.22876331078010553,-0.22773770948481534,-0.22671235190854033,-0.2256872368003622,-0.22466236291185981,-0.22363772899709333,-0.22261333381258833,-0.22158917611732007,-0.22056525467269772,-0.2195415682425488,-0.21851811559310363,-0.21749489549297987,-0.21647190671316704,-0.21544914802701126,-0.21442661821019995,-0.2134043160407467,-0.21238224029897607,-0.2113603897675086,-0.21033876323124573,-0.20931735947735505,-0.20829617729525524,-0.2072752154766015,-0.20625447281527068,-0.20523394810734663,-0.2042136401511057,-0.2031935477470023,-0.2021736696976541,-0.201154004807828,-0.2001345518844256,-0.19911530973646901,-0.19809627717508665,-0.19707745301349902,-0.19605883606700467,-0.19504042515296616,-0.19402221909079617,-0.19300421670194354,-0.19198641680987932,-0.19096881824008316,-0.18995141982002944,-0.18893422037917376,-0.1879172187489391,-0.18690041376270244,-0.1858838042557812,-0.18486738906541977,-0.18385116703077622,-0.18283513699290874,-0.1818192977947626,-0.1808036482811568,-0.17978818729877089,-0.17877291369613188,-0.17775782632360118,-0.1767429240333615,-0.17572820567940395,-0.1747136701175152,-0.1736993162052644,-0.1726851428019906,-0.17167114876878975,-0.17065733296850222,-0.16964369426569997,-0.16863023152667397,-0.16761694361942164,-0.16660382941363433,-0.16559088778068481,-0.16457811759361496,-0.16356551772712313,-0.1625530870575521,-0.1615408244628766,-0.16052872882269115,-0.15951679901819776,-0.15850503393219387,-0.1574934324490602,-0.15648199345474875,-0.1554707158367706,-0.1544595984841841,-0.15344864028758282,-0.15243784013908376,-0.15142719693231538,-0.15041670956240583,-0.14940637692597117,-0.14839619792110367,-0.14738617144736008,-0.14637629640575,-0.1453665716987242,-0.14435699623016315,-0.14334756890536535,-0.14233828863103604,-0.1413291543152755,-0.1403201648675678,-0.13931131919876924,-0.1383026162210973,-0.13729405484811902,-0.13628563399473984,-0.13527735257719245,-0.13426920951302543,-0.1332612037210922,-0.13225333412153992,-0.13124559963579813,-0.13023799918656803,-0.1292305316978113,-0.12822319609473898,-0.12721599130380076,-0.12620891625267383,-0.12520196987025212,-0.12419515108663533,-0.12318845883311824,-0.12218189204217973,-0.12117544964747216,-0.12016913058381057,-0.11916293378716195,-0.11815685819463459,-0.11715090274446747,-0.11614506637601958,-0.11513934802975935,-0.11413374664725412,-0.11312826117115955,-0.11212289054520923,-0.11111763371420406,-0.11011248962400191,-0.1091074572215072,-0.10810253545466046,-0.10709772327242799,-0.10609301962479152,-0.10508842346273795,-0.10408393373824898,-0.10307954940429091,-0.10207526941480444,-0.10107109272469433,-0.10006701828981941,-0.09906304506698227,-0.0980591720139192,-0.09705539808929006,-0.09605172225266823,-0.09504814346453049,-0.094044660686247,-0.0930412728800714,-0.09203797900913062,-0.09103477803741508,-0.09003166892976867,-0.08902865065187884,-0.08802572217026669,-0.0870228824522771,-0.08602013046606888,-0.0850174651806049,-0.08401488556564236,-0.08301239059172283,-0.08200997923016265,-0.08100765045304305,-0.0800054032332005,-0.07900323654421693,-0.07800114936041,-0.07699914065682359,-0.07599720940921789,-0.07499535459406001,-0.07399357518851414,-0.07299187017043209,-0.0719902385183436,-0.07098867921144687,-0.06998719122959893,-0.06898577355330608,-0.06798442516371447,-0.0669831450426005,-0.06598193217236138,-0.06498078553600561,-0.06397970411714361,-0.06297868689997817,-0.06197773286929507,-0.06097684101045369,-0.0599760103093776,-0.05897523975254514,-0.057974528326980086,-0.05697387502024227,-0.055973278820418276,-0.054972738716112066,-0.053972253696435685,-0.05297182275099995,-0.05197144486990518,-0.050971119043731875,-0.04997084426353149,-0.04897061952081717,-0.04797044380755448,-0.04697031611615223,-0.045970235439453194,-0.04497020077072493,-0.04397021110365058,-0.04297026543231968,-0.04197036275121898,-0.04097050205522327,-0.03997068233958624,-0.03897090259993132,-0.03797116183224253,-0.036971459032855356,-0.03597179319844764,-0.03497216332603046,-0.03397256841293901,-0.03297300745682353,-0.0319734794556402,-0.03097398340764206,-0.02997451831136994,-0.028975083165643387,-0.027975676969551617,-0.02697629872244446,-0.025976947423923306,-0.02497762207383206,-0.02397832167224813,-0.022979045219473377,-0.021979791716025113,-0.020980560162627056,-0.01998134956020035,-0.018982158909854534,-0.017982987212878557,-0.01698383347073176,-0.015984696685034896,-0.014985575857561157,-0.013986469990227146,-0.012987378085083937,-0.011988299144308068,-0.010989232170192584,-0.009990176165138047,-0.008991130131643588,-0.007992093072297915,-0.006993063989770366,-0.0059940418868019395,-0.0049950257661963305,-0.003996014630810974,-0.0029970074835480864,-0.001998003327345706,-0.0009990011651687387,0.0,0.0009990011651687387,0.001998003327345706,0.0029970074835480864,0.003996014630810974,0.0049950257661963305,0.0059940418868019395,0.006993063989770366,0.007992093072297915,0.008991130131643588,0.009990176165138047,0.010989232170192584,0.011988299144308068,0.012987378085083937,0.013986469990227146,0.014985575857561157,0.015984696685034896,0.01698383347073176,0.017982987212878557,0.018982158909854534,0.01998134956020035,0.020980560162627056,0.021979791716025113,0.022979045219473377,0.02397832167224813,0.02497762207383206,0.025976947423923306,0.02697629872244446,0.027975676969551617,0.028975083165643387,0.02997451831136994,0.03097398340764206,0.0319734794556402,0.03297300745682353,0.03397256841293901,0.03497216332603046,0.03597179319844764,0.036971459032855356,0.03797116183224253,0.03897090259993132,0.03997068233958624,0.04097050205522327,0.04197036275121898,0.04297026543231968,0.04397021110365058,0.04497020077072493,0.045970235439453194,0.04697031611615223,0.04797044380755448,0.04897061952081717,0.04997084426353149,0.050971119043731875,0.05197144486990518,0.05297182275099995,0.053972253696435685,0.054972738716112066,0.055973278820418276,0.05697387502024227,0.057974528326980086,0.05897523975254514,0.0599760103093776,0.06097684101045369,0.06197773286929507,0.06297868689997817,0.06397970411714361,0.06498078553600561,0.06598193217236138,0.0669831450426005,0.06798442516371447,0.06898577355330608,0.06998719122959893,0.07098867921144687,0.0719902385183436,0.07299187017043209,0.07399357518851414,0.07499535459406001,0.07599720940921789,0.07699914065682359,0.07800114936041,0.07900323654421693,0.0800054032332005,0.08100765045304305,0.08200997923016265,0.08301239059172283,0.08401488556564236,0.0850174651806049,0.08602013046606888,0.0870228824522771,0.08802572217026669,0.08902865065187884,0.09003166892976867,0.09103477803741508,0.09203797900913062,0.0930412728800714,0.094044660686247,0.09504814346453049,0.09605172225266823,0.09705539808929006,0.0980591720139192,0.09906304506698227,0.10006701828981941,0.10107109272469433,0.10207526941480444,0.10307954940429091,0.10408393373824898,0.10508842346273795,0.10609301962479152,0.10709772327242799,0.10810253545466046,0.1091074572215072,0.11011248962400191,0.11111763371420406,0.11212289054520923,0.11312826117115955,0.11413374664725412,0.11513934802975935,0.11614506637601958,0.11715090274446747,0.11815685819463459,0.11916293378716195,0.12016913058381057,0.12117544964747216,0.12218189204217973,0.12318845883311824,0.12419515108663533,0.12520196987025212,0.12620891625267383,0.12721599130380076,0.12822319609473898,0.1292305316978113,0.13023799918656803,0.13124559963579813,0.13225333412153992,0.1332612037210922,0.13426920951302543,0.13527735257719245,0.13628563399473984,0.13729405484811902,0.1383026162210973,0.13931131919876924,0.1403201648675678,0.1413291543152755,0.14233828863103604,0.14334756890536535,0.14435699623016315,0.1453665716987242,0.14637629640575,0.14738617144736008,0.14839619792110367,0.14940637692597117,0.15041670956240583,0.15142719693231538,0.15243784013908376,0.15344864028758282,0.1544595984841841,0.1554707158367706,0.15648199345474875,0.1574934324490602,0.15850503393219387,0.15951679901819776,0.16052872882269115,0.1615408244628766,0.1625530870575521,0.16356551772712313,0.16457811759361496,0.16559088778068481,0.16660382941363433,0.16761694361942164,0.16863023152667397,0.16964369426569997,0.17065733296850222,0.17167114876878975,0.1726851428019906,0.1736993162052644,0.1747136701175152,0.17572820567940395,0.1767429240333615,0.17775782632360118,0.17877291369613188,0.17978818729877089,0.1808036482811568,0.1818192977947626,0.18283513699290874,0.18385116703077622,0.18486738906541977,0.1858838042557812,0.18690041376270244,0.1879172187489391,0.18893422037917376,0.18995141982002944,0.19096881824008316,0.19198641680987932,0.19300421670194354,0.19402221909079617,0.19504042515296616,0.19605883606700467,0.19707745301349902,0.19809627717508665,0.19911530973646901,0.2001345518844256,0.201154004807828,0.2021736696976541,0.2031935477470023,0.2042136401511057,0.20523394810734663,0.20625447281527068,0.2072752154766015,0.20829617729525524,0.20931735947735505,0.21033876323124573,0.2113603897675086,0.21238224029897607,0.2134043160407467,0.21442661821019995,0.21544914802701126,0.21647190671316704,0.21749489549297987,0.21851811559310363,0.2195415682425488,0.22056525467269772,0.22158917611732007,0.22261333381258833,0.22363772899709333,0.22466236291185981,0.2256872368003622,0.22671235190854033,0.22773770948481534,0.22876331078010553,0.22978915704784228,0.23081524954398633,0.23184158952704378,0.23286817825808237,0.2338950170007477,0.2349221070212797,0.23594944958852912,0.23697704597397395,0.23800489745173622,0.23903300529859844,0.2400613707940207,0.24108999522015734,0.24211887986187397,0.2431480260067644,0.24417743494516805,0.24520710797018683,0.2462370463777026,0.24726725146639464,0.2482977245377568,0.2493284668961155,0.2503594798486471,0.25139076470539556,0.2524223227792906,0.25345415538616534,0.25448626384477435,0.25551864947681185,0.25655131360693006,0.257584257562757,0.2586174826749154,0.2596509902770409,0.26068478170580067,0.26171885830091235,0.2627532214051623,0.263787872364425,0.2648228125276819,0.26585804324704015,0.26689356587775226,0.2679293817782351,0.26896549231008954,0.2700018988381195,0.2710386027303519,0.27207560535805647,0.27311290809576516,0.2741505123212923,0.2751884194157547,0.27622663076359155,0.27726514775258493,0.27830397177387994,0.27934310422200515,0.2803825464948936,0.28142229999390284,0.2824623661238364,0.28350274629296424,0.2845434419130438,0.28558445439934177,0.2866257851706544,0.2876674356493299,0.288709407261289,0.28975170143604745,0.2907943196067373,0.29183726321012876,0.2928805336866524,0.29392413248042143,0.29496806103925344,0.2960123208146935,0.29705691326203587,0.2981018398403474,0.2991471020124899,0.3001927012451431,0.30123863900882786,0.3022849167779292,0.30333153603071944,0.30437849824938223,0.30542580492003557,0.3064734575327558,0.3075214575816013,0.30856980656463684,0.30961850598395746,0.31066755734571255,0.31171696216013095,0.312766721941545,0.3138168382084152,0.3148673124833557,0.3159181462931587,0.31696934116881986,0.3180208986455639,0.31907282026286954,0.32012510756449564,0.3211777620985068,0.3222307854172991,0.32328417907762685,0.32433794464062793,0.32539208367185124,0.3264465977412825,0.3275014884233713,0.32855675729705824,0.3296124059458016,0.3306684359576051,0.3317248489250448,0.332781646445297,0.3338388301201662,0.33489640155611244,0.3359543623642802,0.33701271416052614,0.3380714585654476,0.33913059720441174,0.3401901317075838,0.3412500637099563,0.3423103948513787,0.34337112677658604,0.3444322611352291,0.345493799581904,0.3465557437761819,0.3476180953826397,0.34868085607088983,0.34974402751561134,0.35080761139658,0.3518716093986998,0.352936023212034,0.354000854531836,0.35506610505858177,0.35613177649800065,0.35719787056110797,0.35826438896423707,0.3593313334290715,0.3603987056826778,0.36146650745753844,0.3625347404915844,0.36360340652822914,0.3646725073164013,0.36574204461057874,0.3668120201708228,0.3678824357628119,0.3689532931578762,0.37002459413303224,0.37109634047101747,0.372168533960326,0.373241176395243,0.37431426957588126,0.375387815308216,0.3764618154041217,0.377536271681408,0.3786111859638563,0.37968656008125656,0.3807623958694444,0.3818386951703382,0.38291545983197706,0.38399269170855815,0.3850703926604749,0.3861485645543557,0.3872272092631019,0.38830632866592735,0.3893859246483969,0.3904659991024662,0.3915465539265215,0.39262759102541916,0.3937091123105264,0.39479111969976155,0.3958736151176348,0.39695660049528975,0.39804007777054423,0.39912404888793257,0.4002085157987472,0.401293480461081,0.4023789448398701,0.4034649109069366,0.4045513806410319,0.4056383560278801,0.4067258390602219,0.40781383173785896,0.4089023360676979,0.40999135406379544,0.41108088774740376,0.4121709391470152,0.4132615102984089,0.41435260324469625,0.4154442200363678,0.4165363627313397,0.4176290333950012,0.4187222341002618,0.4198159669275995,0.42091023396510835,0.4220050373085479,0.4231003790613911,0.4241962613348745,0.42529268624804734,0.4263896559278217,0.42748717250902296,0.4285852381344405,0.4296838549548789,0.4307830251292095,0.4318827508244221,0.43298303421567785,0.4340838774863612,0.4351852828281335,0.43628725244098665,0.4373897885332965,0.43849289332187785,0.43959656903203853,0.4407008178976351,0.4418056421611283,0.4429110440736389,0.44401702589500464,0.4451235898938365,0.44623073834757637,0.44733847354255524,0.4484467977740505,0.44955571334634564,0.45066522257278857,0.4517753277758519,0.4528860312871925,0.4539973354477125,0.45510924260761987,0.4562217551264905,0.45733487537332956,0.4584486057266346,0.45956294857445806,0.46067790631447103,0.4617934813540273,0.46290967611022754,0.46402649300998483,0.46514393449008967,0.4662620029972764,0.4673807009882897,0.4685000309299519,0.4696199952992304,0.470740596583306,0.47186183727964187,0.47298371989605265,0.4741062469507745,0.4752294209725357,0.4763532445006274,0.4774777200849755,0.4786028502862131,0.47972863767575274,0.48085508483586026,0.48198219435972905,0.483109968851554,0.4842384109266076,0.4853675232113151,0.48649730834333155,0.48762776897161897,0.48875890775652364,0.48989072736985534,0.49102323049496593,0.49215641982682923,0.4932902980721218,0.49442486794930374,0.49556013218870076,0.4966960935325866,0.4978327547352662,0.49897011856316015,0.5001081877948885,0.5012469652213571,0.5023864536458429,0.5035266558840813,0.5046675747643538,0.5058092131275761,0.5069515738273872,0.50809465973024,0.509238473715491,0.5103830186754925,0.5115282975156845,0.512674313154688,0.5138210685243991,0.514968566570083,0.5161168102504706,0.5172658025378539,0.5184155464181838,0.5195660448911683,0.5207173009703712,0.5218693176833121,0.5230220980715673,0.5241756451908712,0.5253299621112189,0.5264850519169699,0.5276409177069527,0.5287975625945691,0.5299549897079021,0.531113202189822,0.5322722031980952,0.5334319959054927,0.5345925834999015,0.5357539691844349,0.5369161561775451,0.5380791477131364,0.5392429470406797,0.5404075574253273,0.5415729821480303,0.5427392245056553,0.543906287811103,0.5450741753934283,0.5462428905979614,0.5474124367864288,0.5485828173370768,0.5497540356447961,0.550926095121247,0.5520989991949854,0.5532727513115914,0.5544473549337979,0.5556228135416206,0.5567991306324896,0.5579763097213827,0.5591543543409581,0.5603332680416901,0.5615130543920068,0.5626937169784261,0.5638752594056956,0.5650576852969336,0.5662409982937705,0.5674252020564915,0.5686103002641822,0.5697962966148742,0.570983194825692,0.5721709986330029,0.5733597117925664,0.5745493380796867,0.5757398812893654,0.5769313452364567,0.578123733755824,0.579317050702497,0.5805112999518315,0.5817064853996711,0.5829026109625086,0.5840996805776514,0.5852976982033868,0.5864966678191499,0.5876965934256921,0.5888974790452532,0.5900993287217338,0.5913021465208683,0.5925059365304035,0.593710702860275,0.5949164496427874,0.5961231810327957,0.5973309012078897,0.5985396143685782,0.5997493247384773,0.6009600365644993,0.6021717541170437,0.6033844816901903,0.6045982236018952,0.6058129841941872,0.607028767833367,0.6082455789102096,0.6094634218401667,0.6106823010635722,0.6119022210458517,0.6131231862777304,0.6143452012754461,0.6155682705809642,0.6167923987621938,0.618017590413207,0.6192438501544598,0.6204711826330167,0.6216995925227766,0.6229290845247005,0.6241596633670441,0.6253913338055902,0.6266241006238851,0.6278579686334778,0.6290929426741603,0.6303290276142127,0.6315662283506485,0.6328045498094647,0.6340439969458941,0.6352845747446592,0.6365262882202303,0.6377691424170868,0.6390131424099786,0.6402582933041947,0.6415046002358311,0.6427520683720631,0.6440007029114216,0.645250509084071,0.6465014921520906,0.6477536574097598,0.6490070101838461,0.6502615558338964,0.6515172997525315,0.6527742473657442,0.6540324041332011,0.6552917755485466,0.6565523671397124,0.6578141844692287,0.6590772331345401,0.6603415187683247,0.6616070470388172,0.6628738236501358,0.6641418543426121,0.6654111448931265,0.6666817011154459,0.667953528860566,0.6692266340170585,0.670501022511421,0.6717767003084312,0.6730536734115071,0.6743319478630696,0.6756115297449098,0.6768924251785609,0.6781746403256755,0.6794581813884063,0.6807430546097908,0.682029266274143,0.6833168227074478,0.6846057302777607,0.6858959953956133,0.6871876245144225,0.6884806241309055,0.6897750007854997,0.6910707610627879,0.692367911591929,0.6936664590470933,0.694966410147904,0.6962677716598841,0.6975705503949083,0.6988747532116618,0.7001803870161036,0.7014874587619361,0.7027959754510815,0.7041059441341628,0.7054173719109926,0.7067302659310658,0.7080446333940619,0.7093604815503506,0.7106778177015058,0.7119966492008262,0.7133169834538613,0.7146388279189457,0.7159621901077402,0.717287077585779,0.7186134979730254,0.7199414589444331,0.7212709682305176,0.7226020336179326,0.7239346629500545,0.7252688641275769,0.7266046451091099,0.7279420139117897,0.7292809786118953,0.7306215473454748,0.7319637283089774,0.733307529759898,0.734652960017427,0.7360000274631112,0.7373487405415221,0.7386991077609356,0.7400511376940186,0.7414048389785265,0.7427602203180107,0.7441172904825348,0.7454760583094013,0.7468365327038894,0.7481987226400011,0.7495626371612203,0.7509282853812803,0.752295676484944,0.7536648197287945,0.7550357244420359,0.7564084000273084,0.7577828559615116,0.7591591017966425,0.760537147160644,0.7619170017582668,0.7632986753719423,0.7646821778626701,0.7660675191709174,0.7674547093175317,0.7688437584046667,0.7702346766167231,0.7716274742213022,0.7730221615701733,0.774418749100258,0.7758172473346256,0.7772176668835068,0.7786200184453205,0.7800243128077176,0.7814305608486393,0.7828387735373927,0.7842489619357428,0.7856611371990196,0.7870753105772447,0.7884914934162732,0.7899096971589553,0.7913299333463135,0.7927522136187405,0.794176549717215,0.7956029534845354,0.7970314368665755,0.798462011913558,0.799894690781349,0.8013294857327724,0.802766409138947,0.8042054734806439,0.8056466913496645,0.8070900754502444,0.8085356386004763,0.8099833937337579,0.8114333539002636,0.8128855322684401,0.8143399421265254,0.8157965968840953,0.8172555100736338,0.8187166953521301,0.8201801665027013,0.8216459374362453,0.823114022193118,0.8245844349448406,0.8260571899958359,0.8275323017851943,0.8290097848884682,0.8304896540195004,0.8319719240322805,0.8334566099228361,0.8349437268311553,0.8364332900431429,0.8379253149926122,0.8394198172633089,0.840916812590974,0.8424163168654406,0.8439183461327692,0.8454229165974212,0.8469300446244707,0.8484397467418556,0.8499520396426713,0.8514669401875039,0.8529844654068071,0.8545046325033211,0.856027458854538,0.8575529620152113,0.8590811597199106,0.860612069885627,0.8621457106144241,0.8636821001961392,0.8652212571111373,0.8667632000331138,0.8683079478319538,0.8698555195766425,0.8714059345382343,0.8729592121928769,0.8745153722248933,0.8760744345299268,0.8776364192181428,0.8792013466174959,0.8807692372770605,0.882340111970427,0.8839139916991645,0.8854908976963537,0.8870708514301892,0.8886538746076547,0.8902399891782711,0.8918292173379226,0.8934215815327586,0.8950171044631753,0.8966158090878809,0.8982177186280424,0.899822856571519,0.9014312466771839,0.9030429129793365,0.9046578797922058,0.9062761717145504,0.9078978136343552,0.9095228307336282,0.9111512484932993,0.9127830926982257,0.9144183894423041,0.9160571651336941,0.9176994465001558,0.9193452605945045,0.920994634800184,0.9226475968369656,0.9243041747667716,0.9259643969996302,0.9276282922997624,0.9292958897918092,0.9309672189671974,0.9326423096906505,0.9343211922068511,0.9360038971472538,0.9376904555370577,0.9393808988023402,0.9410752587773581,0.9427735677120198,0.9444758582795338,0.94618216358424,0.9478925171696273,0.9496069530265422,0.9513255056015988,0.9530482098057897,0.9547751010233079,0.9565062151205861,0.9582415884555577,0.9599812578871472,0.9617252607849983,0.9634736350394455,0.9652264190717365,0.9669836518445135,0.9687453728725639,0.9705116222338438,0.9722824405807872,0.9740578691519087,0.9758379497837084,0.9776227249228884,0.9794122376388932,0.9812065316367824,0.9830056512704457,0.9848096415561756,0.9866185481866041,0.9884324175450204,0.9902512967200783,0.99207523352091,0.9939042764926573,0.9957384749324355,0.997577878905745,0.9994225392633461,1.0012725076586113,1.003127836565375,1.004988579296296,1.0068547900217493,1.0087265237892695,1.0106038365435648,1.0124867851471195,1.0143754274014085,1.0162698220687472,1.0181700288947968,1.0200761086317527,1.0219881230622394,1.0239061350239393,1.0258302084349817,1.027760408320124,1.0296968008377507,1.0316394533077282,1.0335884342401398,1.0355438133649462,1.0375056616625966,1.0394740513956384,1.0414490561413576,1.0434307508254956,1.0454192117570842,1.047414516664447,1.0494167447324105,1.051425976640781,1.053442294604134,1.0554657824129778,1.057496525476343,1.0595346108658645,1.0615801273614163,1.0636331654983702,1.0656938176165434,1.0677621779109194,1.0698383424842102,1.0719224094013478,1.0740144787459958,1.0761146526791645,1.078223035500034,1.08033973370908,1.0824648560736225,1.0845985136958938,1.0867408200837618,1.0888918912242287,1.0910518456598368,1.0932208045681295,1.0953988918443147,1.09758623418729,1.099782961189197,1.1019892054286853,1.1042051025680784,1.106430791454633,1.1086664142261164,1.1109121164209215,1.1131680470929612,1.1154343589316003,1.1177112083868965,1.1199987558004396,1.1222971655420966,1.1246066061529973,1.1269272504951047,1.1292592759077489,1.1316028643715241,1.133958202679977,1.136325482619542,1.138704901158211,1.141096660643472,1.1435009690100613,1.1459180399981466,1.148348093382581,1.150791355213921,1.153248058071959,1.1557184413325685,1.1582027514487312,1.1607012422466765,1.163214175238133,1.1657418199497878,1.1682844542711144,1.1708423648218431,1.1734158473404488,1.1760052070951352,1.178610759318937,1.1812328296706878,1.183871754723759,1.1865278824846406,1.1892015729436234,1.191893198660044,1.1946031453847792,1.1973318127229282,1.2000796148399067,1.202846981214467,1.2056343574425212,1.2084422060960192,1.211271007641555,1.2141212614238637,1.2169934867198935,1.2198882238697495,1.2228060354914643,1.2257475077873226,1.2287132519503123,1.2317039056802441,1.2347201348201717,1.2377626351249937,1.2408321341755149,1.2439293934528648,1.2470552105900032,1.2502104218191397,1.2533959046363168,1.2566125807071742,1.259861419041125,1.263143439464876,1.266459716430528,1.269811383198515,1.2731996364414642,1.2766257413219422,1.2800910371050866,1.283596943376638,1.287144966948134,1.2907367095444235,1.294373876384605,1.2980582857866687,1.3017918799491555,1.3055767370910711,1.3094150851651944,1.3133093174014112,1.3172620099876864,1.3212759422593074,1.3253541198454752,1.3294998013205406,1.3337165290310513,1.3380081649271909,1.3423789324287758,1.346833465616388,1.3513768673776474,1.3560147785854428,1.36075346097934,1.365599897221115,1.3705619126848532,1.3756483250462017,1.3808691298427815,1.3862357331782005,1.3917612470903578,1.3974608695309416,1.4033523806100368,1.409456801785667,1.41579928858909,1.4224103667424246,1.4293276883802393,1.4365986038030125,1.444284065703959,1.4524648214055167,1.4612517824148195,1.4708046382537716,1.4813684991694585,1.4933560117250577,1.5075718428025136,1.5260935891346763,1.5707963267948966],"x":[-1.0,-0.999000999000999,-0.998001998001998,-0.997002997002997,-0.996003996003996,-0.995004995004995,-0.994005994005994,-0.993006993006993,-0.9920079920079921,-0.991008991008991,-0.99000999000999,-0.989010989010989,-0.988011988011988,-0.987012987012987,-0.986013986013986,-0.985014985014985,-0.984015984015984,-0.983016983016983,-0.9820179820179821,-0.981018981018981,-0.98001998001998,-0.9790209790209791,-0.978021978021978,-0.977022977022977,-0.9760239760239761,-0.975024975024975,-0.974025974025974,-0.973026973026973,-0.972027972027972,-0.971028971028971,-0.97002997002997,-0.9690309690309691,-0.968031968031968,-0.967032967032967,-0.9660339660339661,-0.965034965034965,-0.964035964035964,-0.9630369630369631,-0.962037962037962,-0.961038961038961,-0.9600399600399601,-0.9590409590409591,-0.958041958041958,-0.957042957042957,-0.9560439560439561,-0.955044955044955,-0.954045954045954,-0.9530469530469531,-0.952047952047952,-0.951048951048951,-0.9500499500499501,-0.949050949050949,-0.948051948051948,-0.9470529470529471,-0.9460539460539461,-0.945054945054945,-0.9440559440559441,-0.9430569430569431,-0.942057942057942,-0.9410589410589411,-0.9400599400599401,-0.939060939060939,-0.938061938061938,-0.9370629370629371,-0.936063936063936,-0.935064935064935,-0.9340659340659341,-0.9330669330669331,-0.932067932067932,-0.9310689310689311,-0.9300699300699301,-0.929070929070929,-0.9280719280719281,-0.9270729270729271,-0.926073926073926,-0.9250749250749251,-0.9240759240759241,-0.9230769230769231,-0.922077922077922,-0.9210789210789211,-0.9200799200799201,-0.919080919080919,-0.9180819180819181,-0.9170829170829171,-0.916083916083916,-0.9150849150849151,-0.9140859140859141,-0.913086913086913,-0.9120879120879121,-0.9110889110889111,-0.9100899100899101,-0.9090909090909091,-0.9080919080919081,-0.9070929070929071,-0.906093906093906,-0.9050949050949051,-0.9040959040959041,-0.903096903096903,-0.9020979020979021,-0.9010989010989011,-0.9000999000999002,-0.8991008991008991,-0.8981018981018981,-0.8971028971028971,-0.8961038961038961,-0.8951048951048951,-0.8941058941058941,-0.8931068931068931,-0.8921078921078921,-0.8911088911088911,-0.8901098901098901,-0.8891108891108891,-0.8881118881118881,-0.8871128871128872,-0.8861138861138861,-0.8851148851148851,-0.8841158841158842,-0.8831168831168831,-0.8821178821178821,-0.8811188811188811,-0.8801198801198801,-0.8791208791208791,-0.8781218781218781,-0.8771228771228772,-0.8761238761238761,-0.8751248751248751,-0.8741258741258742,-0.8731268731268731,-0.8721278721278721,-0.8711288711288712,-0.8701298701298701,-0.8691308691308691,-0.8681318681318682,-0.8671328671328671,-0.8661338661338661,-0.8651348651348651,-0.8641358641358642,-0.8631368631368631,-0.8621378621378621,-0.8611388611388612,-0.8601398601398601,-0.8591408591408591,-0.8581418581418582,-0.8571428571428571,-0.8561438561438561,-0.8551448551448552,-0.8541458541458542,-0.8531468531468531,-0.8521478521478522,-0.8511488511488512,-0.8501498501498501,-0.8491508491508492,-0.8481518481518482,-0.8471528471528471,-0.8461538461538461,-0.8451548451548452,-0.8441558441558441,-0.8431568431568431,-0.8421578421578422,-0.8411588411588412,-0.8401598401598401,-0.8391608391608392,-0.8381618381618382,-0.8371628371628371,-0.8361638361638362,-0.8351648351648352,-0.8341658341658341,-0.8331668331668332,-0.8321678321678322,-0.8311688311688312,-0.8301698301698301,-0.8291708291708292,-0.8281718281718282,-0.8271728271728271,-0.8261738261738262,-0.8251748251748252,-0.8241758241758241,-0.8231768231768232,-0.8221778221778222,-0.8211788211788211,-0.8201798201798202,-0.8191808191808192,-0.8181818181818182,-0.8171828171828172,-0.8161838161838162,-0.8151848151848152,-0.8141858141858141,-0.8131868131868132,-0.8121878121878122,-0.8111888111888111,-0.8101898101898102,-0.8091908091908092,-0.8081918081918081,-0.8071928071928072,-0.8061938061938062,-0.8051948051948052,-0.8041958041958042,-0.8031968031968032,-0.8021978021978022,-0.8011988011988012,-0.8001998001998002,-0.7992007992007992,-0.7982017982017982,-0.7972027972027972,-0.7962037962037962,-0.7952047952047953,-0.7942057942057942,-0.7932067932067932,-0.7922077922077922,-0.7912087912087912,-0.7902097902097902,-0.7892107892107892,-0.7882117882117882,-0.7872127872127872,-0.7862137862137862,-0.7852147852147852,-0.7842157842157842,-0.7832167832167832,-0.7822177822177823,-0.7812187812187812,-0.7802197802197802,-0.7792207792207793,-0.7782217782217782,-0.7772227772227772,-0.7762237762237763,-0.7752247752247752,-0.7742257742257742,-0.7732267732267732,-0.7722277722277723,-0.7712287712287712,-0.7702297702297702,-0.7692307692307693,-0.7682317682317682,-0.7672327672327672,-0.7662337662337663,-0.7652347652347652,-0.7642357642357642,-0.7632367632367633,-0.7622377622377622,-0.7612387612387612,-0.7602397602397603,-0.7592407592407593,-0.7582417582417582,-0.7572427572427572,-0.7562437562437563,-0.7552447552447552,-0.7542457542457542,-0.7532467532467533,-0.7522477522477522,-0.7512487512487512,-0.7502497502497503,-0.7492507492507493,-0.7482517482517482,-0.7472527472527473,-0.7462537462537463,-0.7452547452547452,-0.7442557442557443,-0.7432567432567433,-0.7422577422577422,-0.7412587412587412,-0.7402597402597403,-0.7392607392607392,-0.7382617382617382,-0.7372627372627373,-0.7362637362637363,-0.7352647352647352,-0.7342657342657343,-0.7332667332667333,-0.7322677322677322,-0.7312687312687313,-0.7302697302697303,-0.7292707292707292,-0.7282717282717283,-0.7272727272727273,-0.7262737262737263,-0.7252747252747253,-0.7242757242757243,-0.7232767232767233,-0.7222777222777222,-0.7212787212787213,-0.7202797202797203,-0.7192807192807192,-0.7182817182817183,-0.7172827172827173,-0.7162837162837162,-0.7152847152847153,-0.7142857142857143,-0.7132867132867133,-0.7122877122877123,-0.7112887112887113,-0.7102897102897103,-0.7092907092907093,-0.7082917082917083,-0.7072927072927073,-0.7062937062937062,-0.7052947052947053,-0.7042957042957043,-0.7032967032967034,-0.7022977022977023,-0.7012987012987013,-0.7002997002997003,-0.6993006993006993,-0.6983016983016983,-0.6973026973026973,-0.6963036963036963,-0.6953046953046953,-0.6943056943056943,-0.6933066933066933,-0.6923076923076923,-0.6913086913086913,-0.6903096903096904,-0.6893106893106893,-0.6883116883116883,-0.6873126873126874,-0.6863136863136863,-0.6853146853146853,-0.6843156843156843,-0.6833166833166833,-0.6823176823176823,-0.6813186813186813,-0.6803196803196803,-0.6793206793206793,-0.6783216783216783,-0.6773226773226774,-0.6763236763236763,-0.6753246753246753,-0.6743256743256744,-0.6733266733266733,-0.6723276723276723,-0.6713286713286714,-0.6703296703296703,-0.6693306693306693,-0.6683316683316683,-0.6673326673326674,-0.6663336663336663,-0.6653346653346653,-0.6643356643356644,-0.6633366633366633,-0.6623376623376623,-0.6613386613386614,-0.6603396603396603,-0.6593406593406593,-0.6583416583416584,-0.6573426573426573,-0.6563436563436563,-0.6553446553446554,-0.6543456543456544,-0.6533466533466533,-0.6523476523476524,-0.6513486513486514,-0.6503496503496503,-0.6493506493506493,-0.6483516483516484,-0.6473526473526473,-0.6463536463536463,-0.6453546453546454,-0.6443556443556444,-0.6433566433566433,-0.6423576423576424,-0.6413586413586414,-0.6403596403596403,-0.6393606393606394,-0.6383616383616384,-0.6373626373626373,-0.6363636363636364,-0.6353646353646354,-0.6343656343656343,-0.6333666333666333,-0.6323676323676324,-0.6313686313686314,-0.6303696303696303,-0.6293706293706294,-0.6283716283716284,-0.6273726273726273,-0.6263736263736264,-0.6253746253746254,-0.6243756243756243,-0.6233766233766234,-0.6223776223776224,-0.6213786213786214,-0.6203796203796204,-0.6193806193806194,-0.6183816183816184,-0.6173826173826173,-0.6163836163836164,-0.6153846153846154,-0.6143856143856143,-0.6133866133866134,-0.6123876123876124,-0.6113886113886113,-0.6103896103896104,-0.6093906093906094,-0.6083916083916084,-0.6073926073926074,-0.6063936063936064,-0.6053946053946054,-0.6043956043956044,-0.6033966033966034,-0.6023976023976024,-0.6013986013986014,-0.6003996003996004,-0.5994005994005994,-0.5984015984015985,-0.5974025974025974,-0.5964035964035964,-0.5954045954045954,-0.5944055944055944,-0.5934065934065934,-0.5924075924075924,-0.5914085914085914,-0.5904095904095904,-0.5894105894105894,-0.5884115884115884,-0.5874125874125874,-0.5864135864135864,-0.5854145854145855,-0.5844155844155844,-0.5834165834165834,-0.5824175824175825,-0.5814185814185814,-0.5804195804195804,-0.5794205794205795,-0.5784215784215784,-0.5774225774225774,-0.5764235764235764,-0.5754245754245755,-0.5744255744255744,-0.5734265734265734,-0.5724275724275725,-0.5714285714285714,-0.5704295704295704,-0.5694305694305695,-0.5684315684315684,-0.5674325674325674,-0.5664335664335665,-0.5654345654345654,-0.5644355644355644,-0.5634365634365635,-0.5624375624375625,-0.5614385614385614,-0.5604395604395604,-0.5594405594405595,-0.5584415584415584,-0.5574425574425574,-0.5564435564435565,-0.5554445554445554,-0.5544455544455544,-0.5534465534465535,-0.5524475524475524,-0.5514485514485514,-0.5504495504495505,-0.5494505494505495,-0.5484515484515484,-0.5474525474525475,-0.5464535464535465,-0.5454545454545454,-0.5444555444555444,-0.5434565434565435,-0.5424575424575424,-0.5414585414585414,-0.5404595404595405,-0.5394605394605395,-0.5384615384615384,-0.5374625374625375,-0.5364635364635365,-0.5354645354645354,-0.5344655344655345,-0.5334665334665335,-0.5324675324675324,-0.5314685314685315,-0.5304695304695305,-0.5294705294705294,-0.5284715284715285,-0.5274725274725275,-0.5264735264735265,-0.5254745254745254,-0.5244755244755245,-0.5234765234765235,-0.5224775224775224,-0.5214785214785215,-0.5204795204795205,-0.5194805194805194,-0.5184815184815185,-0.5174825174825175,-0.5164835164835165,-0.5154845154845155,-0.5144855144855145,-0.5134865134865135,-0.5124875124875125,-0.5114885114885115,-0.5104895104895105,-0.5094905094905094,-0.5084915084915085,-0.5074925074925075,-0.5064935064935064,-0.5054945054945055,-0.5044955044955045,-0.5034965034965035,-0.5024975024975025,-0.5014985014985015,-0.5004995004995005,-0.4995004995004995,-0.4985014985014985,-0.4975024975024975,-0.4965034965034965,-0.4955044955044955,-0.4945054945054945,-0.4935064935064935,-0.4925074925074925,-0.4915084915084915,-0.4905094905094905,-0.48951048951048953,-0.4885114885114885,-0.4875124875124875,-0.4865134865134865,-0.4855144855144855,-0.48451548451548454,-0.4835164835164835,-0.4825174825174825,-0.48151848151848153,-0.4805194805194805,-0.47952047952047955,-0.4785214785214785,-0.4775224775224775,-0.47652347652347654,-0.4755244755244755,-0.4745254745254745,-0.47352647352647353,-0.4725274725274725,-0.47152847152847155,-0.47052947052947053,-0.4695304695304695,-0.46853146853146854,-0.4675324675324675,-0.46653346653346656,-0.46553446553446554,-0.4645354645354645,-0.46353646353646355,-0.46253746253746253,-0.46153846153846156,-0.46053946053946054,-0.4595404595404595,-0.45854145854145856,-0.45754245754245754,-0.4565434565434565,-0.45554445554445555,-0.45454545454545453,-0.45354645354645357,-0.45254745254745254,-0.4515484515484515,-0.45054945054945056,-0.44955044955044954,-0.4485514485514486,-0.44755244755244755,-0.44655344655344653,-0.44555444555444557,-0.44455544455544455,-0.4435564435564436,-0.44255744255744256,-0.44155844155844154,-0.4405594405594406,-0.43956043956043955,-0.4385614385614386,-0.43756243756243757,-0.43656343656343655,-0.4355644355644356,-0.43456543456543456,-0.43356643356643354,-0.4325674325674326,-0.43156843156843155,-0.4305694305694306,-0.42957042957042957,-0.42857142857142855,-0.4275724275724276,-0.42657342657342656,-0.4255744255744256,-0.4245754245754246,-0.42357642357642356,-0.4225774225774226,-0.42157842157842157,-0.4205794205794206,-0.4195804195804196,-0.41858141858141856,-0.4175824175824176,-0.4165834165834166,-0.4155844155844156,-0.4145854145854146,-0.41358641358641357,-0.4125874125874126,-0.4115884115884116,-0.41058941058941056,-0.4095904095904096,-0.4085914085914086,-0.4075924075924076,-0.4065934065934066,-0.40559440559440557,-0.4045954045954046,-0.4035964035964036,-0.4025974025974026,-0.4015984015984016,-0.4005994005994006,-0.3996003996003996,-0.3986013986013986,-0.39760239760239763,-0.3966033966033966,-0.3956043956043956,-0.3946053946053946,-0.3936063936063936,-0.3926073926073926,-0.3916083916083916,-0.3906093906093906,-0.38961038961038963,-0.3886113886113886,-0.3876123876123876,-0.3866133866133866,-0.3856143856143856,-0.38461538461538464,-0.3836163836163836,-0.3826173826173826,-0.38161838161838163,-0.3806193806193806,-0.37962037962037964,-0.3786213786213786,-0.3776223776223776,-0.37662337662337664,-0.3756243756243756,-0.37462537462537465,-0.37362637362637363,-0.3726273726273726,-0.37162837162837165,-0.3706293706293706,-0.3696303696303696,-0.36863136863136864,-0.3676323676323676,-0.36663336663336665,-0.36563436563436563,-0.3646353646353646,-0.36363636363636365,-0.3626373626373626,-0.36163836163836166,-0.36063936063936064,-0.3596403596403596,-0.35864135864135865,-0.35764235764235763,-0.35664335664335667,-0.35564435564435565,-0.3546453546453546,-0.35364635364635366,-0.35264735264735264,-0.3516483516483517,-0.35064935064935066,-0.34965034965034963,-0.34865134865134867,-0.34765234765234765,-0.34665334665334663,-0.34565434565434566,-0.34465534465534464,-0.3436563436563437,-0.34265734265734266,-0.34165834165834164,-0.34065934065934067,-0.33966033966033965,-0.3386613386613387,-0.33766233766233766,-0.33666333666333664,-0.3356643356643357,-0.33466533466533466,-0.3336663336663337,-0.33266733266733267,-0.33166833166833165,-0.3306693306693307,-0.32967032967032966,-0.32867132867132864,-0.3276723276723277,-0.32667332667332666,-0.3256743256743257,-0.3246753246753247,-0.32367632367632365,-0.3226773226773227,-0.32167832167832167,-0.3206793206793207,-0.3196803196803197,-0.31868131868131866,-0.3176823176823177,-0.3166833166833167,-0.3156843156843157,-0.3146853146853147,-0.31368631368631367,-0.3126873126873127,-0.3116883116883117,-0.3106893106893107,-0.3096903096903097,-0.3086913086913087,-0.3076923076923077,-0.3066933066933067,-0.30569430569430567,-0.3046953046953047,-0.3036963036963037,-0.3026973026973027,-0.3016983016983017,-0.3006993006993007,-0.2997002997002997,-0.2987012987012987,-0.2977022977022977,-0.2967032967032967,-0.2957042957042957,-0.2947052947052947,-0.2937062937062937,-0.29270729270729273,-0.2917082917082917,-0.2907092907092907,-0.2897102897102897,-0.2887112887112887,-0.28771228771228774,-0.2867132867132867,-0.2857142857142857,-0.28471528471528473,-0.2837162837162837,-0.2827172827172827,-0.2817182817182817,-0.2807192807192807,-0.27972027972027974,-0.2787212787212787,-0.2777222777222777,-0.27672327672327673,-0.2757242757242757,-0.27472527472527475,-0.27372627372627373,-0.2727272727272727,-0.27172827172827174,-0.2707292707292707,-0.26973026973026976,-0.26873126873126874,-0.2677322677322677,-0.26673326673326675,-0.26573426573426573,-0.2647352647352647,-0.26373626373626374,-0.2627372627372627,-0.26173826173826176,-0.26073926073926074,-0.2597402597402597,-0.25874125874125875,-0.25774225774225773,-0.25674325674325676,-0.25574425574425574,-0.2547452547452547,-0.25374625374625376,-0.25274725274725274,-0.2517482517482518,-0.25074925074925075,-0.24975024975024976,-0.24875124875124874,-0.24775224775224775,-0.24675324675324675,-0.24575424575424576,-0.24475524475524477,-0.24375624375624375,-0.24275724275724275,-0.24175824175824176,-0.24075924075924077,-0.23976023976023977,-0.23876123876123875,-0.23776223776223776,-0.23676323676323677,-0.23576423576423577,-0.23476523476523475,-0.23376623376623376,-0.23276723276723277,-0.23176823176823177,-0.23076923076923078,-0.22977022977022976,-0.22877122877122877,-0.22777222777222778,-0.22677322677322678,-0.22577422577422576,-0.22477522477522477,-0.22377622377622378,-0.22277722277722278,-0.2217782217782218,-0.22077922077922077,-0.21978021978021978,-0.21878121878121878,-0.2177822177822178,-0.21678321678321677,-0.21578421578421578,-0.21478521478521478,-0.2137862137862138,-0.2127872127872128,-0.21178821178821178,-0.21078921078921078,-0.2097902097902098,-0.2087912087912088,-0.2077922077922078,-0.20679320679320679,-0.2057942057942058,-0.2047952047952048,-0.2037962037962038,-0.20279720279720279,-0.2017982017982018,-0.2007992007992008,-0.1998001998001998,-0.19880119880119881,-0.1978021978021978,-0.1968031968031968,-0.1958041958041958,-0.19480519480519481,-0.1938061938061938,-0.1928071928071928,-0.1918081918081918,-0.19080919080919082,-0.18981018981018982,-0.1888111888111888,-0.1878121878121878,-0.18681318681318682,-0.18581418581418582,-0.1848151848151848,-0.1838161838161838,-0.18281718281718282,-0.18181818181818182,-0.18081918081918083,-0.1798201798201798,-0.17882117882117882,-0.17782217782217782,-0.17682317682317683,-0.17582417582417584,-0.17482517482517482,-0.17382617382617382,-0.17282717282717283,-0.17182817182817184,-0.17082917082917082,-0.16983016983016982,-0.16883116883116883,-0.16783216783216784,-0.16683316683316685,-0.16583416583416583,-0.16483516483516483,-0.16383616383616384,-0.16283716283716285,-0.16183816183816183,-0.16083916083916083,-0.15984015984015984,-0.15884115884115885,-0.15784215784215785,-0.15684315684315683,-0.15584415584415584,-0.15484515484515485,-0.15384615384615385,-0.15284715284715283,-0.15184815184815184,-0.15084915084915085,-0.14985014985014986,-0.14885114885114886,-0.14785214785214784,-0.14685314685314685,-0.14585414585414586,-0.14485514485514486,-0.14385614385614387,-0.14285714285714285,-0.14185814185814186,-0.14085914085914086,-0.13986013986013987,-0.13886113886113885,-0.13786213786213786,-0.13686313686313686,-0.13586413586413587,-0.13486513486513488,-0.13386613386613386,-0.13286713286713286,-0.13186813186813187,-0.13086913086913088,-0.12987012987012986,-0.12887112887112886,-0.12787212787212787,-0.12687312687312688,-0.1258741258741259,-0.12487512487512488,-0.12387612387612387,-0.12287712287712288,-0.12187812187812187,-0.12087912087912088,-0.11988011988011989,-0.11888111888111888,-0.11788211788211789,-0.11688311688311688,-0.11588411588411589,-0.11488511488511488,-0.11388611388611389,-0.11288711288711288,-0.11188811188811189,-0.1108891108891109,-0.10989010989010989,-0.1088911088911089,-0.10789210789210789,-0.1068931068931069,-0.10589410589410589,-0.1048951048951049,-0.1038961038961039,-0.1028971028971029,-0.1018981018981019,-0.1008991008991009,-0.0999000999000999,-0.0989010989010989,-0.0979020979020979,-0.0969030969030969,-0.0959040959040959,-0.09490509490509491,-0.0939060939060939,-0.09290709290709291,-0.0919080919080919,-0.09090909090909091,-0.0899100899100899,-0.08891108891108891,-0.08791208791208792,-0.08691308691308691,-0.08591408591408592,-0.08491508491508491,-0.08391608391608392,-0.08291708291708291,-0.08191808191808192,-0.08091908091908091,-0.07992007992007992,-0.07892107892107893,-0.07792207792207792,-0.07692307692307693,-0.07592407592407592,-0.07492507492507493,-0.07392607392607392,-0.07292707292707293,-0.07192807192807193,-0.07092907092907093,-0.06993006993006994,-0.06893106893106893,-0.06793206793206794,-0.06693306693306693,-0.06593406593406594,-0.06493506493506493,-0.06393606393606394,-0.06293706293706294,-0.061938061938061936,-0.060939060939060936,-0.059940059940059943,-0.058941058941058944,-0.057942057942057944,-0.056943056943056944,-0.055944055944055944,-0.054945054945054944,-0.053946053946053944,-0.052947052947052944,-0.05194805194805195,-0.05094905094905095,-0.04995004995004995,-0.04895104895104895,-0.04795204795204795,-0.04695304695304695,-0.04595404595404595,-0.04495504495504495,-0.04395604395604396,-0.04295704295704296,-0.04195804195804196,-0.04095904095904096,-0.03996003996003996,-0.03896103896103896,-0.03796203796203796,-0.03696303696303696,-0.03596403596403597,-0.03496503496503497,-0.03396603396603397,-0.03296703296703297,-0.03196803196803197,-0.030969030969030968,-0.029970029970029972,-0.028971028971028972,-0.027972027972027972,-0.026973026973026972,-0.025974025974025976,-0.024975024975024976,-0.023976023976023976,-0.022977022977022976,-0.02197802197802198,-0.02097902097902098,-0.01998001998001998,-0.01898101898101898,-0.017982017982017984,-0.016983016983016984,-0.015984015984015984,-0.014985014985014986,-0.013986013986013986,-0.012987012987012988,-0.011988011988011988,-0.01098901098901099,-0.00999000999000999,-0.008991008991008992,-0.007992007992007992,-0.006993006993006993,-0.005994005994005994,-0.004995004995004995,-0.003996003996003996,-0.002997002997002997,-0.001998001998001998,-0.000999000999000999,0.0,0.000999000999000999,0.001998001998001998,0.002997002997002997,0.003996003996003996,0.004995004995004995,0.005994005994005994,0.006993006993006993,0.007992007992007992,0.008991008991008992,0.00999000999000999,0.01098901098901099,0.011988011988011988,0.012987012987012988,0.013986013986013986,0.014985014985014986,0.015984015984015984,0.016983016983016984,0.017982017982017984,0.01898101898101898,0.01998001998001998,0.02097902097902098,0.02197802197802198,0.022977022977022976,0.023976023976023976,0.024975024975024976,0.025974025974025976,0.026973026973026972,0.027972027972027972,0.028971028971028972,0.029970029970029972,0.030969030969030968,0.03196803196803197,0.03296703296703297,0.03396603396603397,0.03496503496503497,0.03596403596403597,0.03696303696303696,0.03796203796203796,0.03896103896103896,0.03996003996003996,0.04095904095904096,0.04195804195804196,0.04295704295704296,0.04395604395604396,0.04495504495504495,0.04595404595404595,0.04695304695304695,0.04795204795204795,0.04895104895104895,0.04995004995004995,0.05094905094905095,0.05194805194805195,0.052947052947052944,0.053946053946053944,0.054945054945054944,0.055944055944055944,0.056943056943056944,0.057942057942057944,0.058941058941058944,0.059940059940059943,0.060939060939060936,0.061938061938061936,0.06293706293706294,0.06393606393606394,0.06493506493506493,0.06593406593406594,0.06693306693306693,0.06793206793206794,0.06893106893106893,0.06993006993006994,0.07092907092907093,0.07192807192807193,0.07292707292707293,0.07392607392607392,0.07492507492507493,0.07592407592407592,0.07692307692307693,0.07792207792207792,0.07892107892107893,0.07992007992007992,0.08091908091908091,0.08191808191808192,0.08291708291708291,0.08391608391608392,0.08491508491508491,0.08591408591408592,0.08691308691308691,0.08791208791208792,0.08891108891108891,0.0899100899100899,0.09090909090909091,0.0919080919080919,0.09290709290709291,0.0939060939060939,0.09490509490509491,0.0959040959040959,0.0969030969030969,0.0979020979020979,0.0989010989010989,0.0999000999000999,0.1008991008991009,0.1018981018981019,0.1028971028971029,0.1038961038961039,0.1048951048951049,0.10589410589410589,0.1068931068931069,0.10789210789210789,0.1088911088911089,0.10989010989010989,0.1108891108891109,0.11188811188811189,0.11288711288711288,0.11388611388611389,0.11488511488511488,0.11588411588411589,0.11688311688311688,0.11788211788211789,0.11888111888111888,0.11988011988011989,0.12087912087912088,0.12187812187812187,0.12287712287712288,0.12387612387612387,0.12487512487512488,0.1258741258741259,0.12687312687312688,0.12787212787212787,0.12887112887112886,0.12987012987012986,0.13086913086913088,0.13186813186813187,0.13286713286713286,0.13386613386613386,0.13486513486513488,0.13586413586413587,0.13686313686313686,0.13786213786213786,0.13886113886113885,0.13986013986013987,0.14085914085914086,0.14185814185814186,0.14285714285714285,0.14385614385614387,0.14485514485514486,0.14585414585414586,0.14685314685314685,0.14785214785214784,0.14885114885114886,0.14985014985014986,0.15084915084915085,0.15184815184815184,0.15284715284715283,0.15384615384615385,0.15484515484515485,0.15584415584415584,0.15684315684315683,0.15784215784215785,0.15884115884115885,0.15984015984015984,0.16083916083916083,0.16183816183816183,0.16283716283716285,0.16383616383616384,0.16483516483516483,0.16583416583416583,0.16683316683316685,0.16783216783216784,0.16883116883116883,0.16983016983016982,0.17082917082917082,0.17182817182817184,0.17282717282717283,0.17382617382617382,0.17482517482517482,0.17582417582417584,0.17682317682317683,0.17782217782217782,0.17882117882117882,0.1798201798201798,0.18081918081918083,0.18181818181818182,0.18281718281718282,0.1838161838161838,0.1848151848151848,0.18581418581418582,0.18681318681318682,0.1878121878121878,0.1888111888111888,0.18981018981018982,0.19080919080919082,0.1918081918081918,0.1928071928071928,0.1938061938061938,0.19480519480519481,0.1958041958041958,0.1968031968031968,0.1978021978021978,0.19880119880119881,0.1998001998001998,0.2007992007992008,0.2017982017982018,0.20279720279720279,0.2037962037962038,0.2047952047952048,0.2057942057942058,0.20679320679320679,0.2077922077922078,0.2087912087912088,0.2097902097902098,0.21078921078921078,0.21178821178821178,0.2127872127872128,0.2137862137862138,0.21478521478521478,0.21578421578421578,0.21678321678321677,0.2177822177822178,0.21878121878121878,0.21978021978021978,0.22077922077922077,0.2217782217782218,0.22277722277722278,0.22377622377622378,0.22477522477522477,0.22577422577422576,0.22677322677322678,0.22777222777222778,0.22877122877122877,0.22977022977022976,0.23076923076923078,0.23176823176823177,0.23276723276723277,0.23376623376623376,0.23476523476523475,0.23576423576423577,0.23676323676323677,0.23776223776223776,0.23876123876123875,0.23976023976023977,0.24075924075924077,0.24175824175824176,0.24275724275724275,0.24375624375624375,0.24475524475524477,0.24575424575424576,0.24675324675324675,0.24775224775224775,0.24875124875124874,0.24975024975024976,0.25074925074925075,0.2517482517482518,0.25274725274725274,0.25374625374625376,0.2547452547452547,0.25574425574425574,0.25674325674325676,0.25774225774225773,0.25874125874125875,0.2597402597402597,0.26073926073926074,0.26173826173826176,0.2627372627372627,0.26373626373626374,0.2647352647352647,0.26573426573426573,0.26673326673326675,0.2677322677322677,0.26873126873126874,0.26973026973026976,0.2707292707292707,0.27172827172827174,0.2727272727272727,0.27372627372627373,0.27472527472527475,0.2757242757242757,0.27672327672327673,0.2777222777222777,0.2787212787212787,0.27972027972027974,0.2807192807192807,0.2817182817182817,0.2827172827172827,0.2837162837162837,0.28471528471528473,0.2857142857142857,0.2867132867132867,0.28771228771228774,0.2887112887112887,0.2897102897102897,0.2907092907092907,0.2917082917082917,0.29270729270729273,0.2937062937062937,0.2947052947052947,0.2957042957042957,0.2967032967032967,0.2977022977022977,0.2987012987012987,0.2997002997002997,0.3006993006993007,0.3016983016983017,0.3026973026973027,0.3036963036963037,0.3046953046953047,0.30569430569430567,0.3066933066933067,0.3076923076923077,0.3086913086913087,0.3096903096903097,0.3106893106893107,0.3116883116883117,0.3126873126873127,0.31368631368631367,0.3146853146853147,0.3156843156843157,0.3166833166833167,0.3176823176823177,0.31868131868131866,0.3196803196803197,0.3206793206793207,0.32167832167832167,0.3226773226773227,0.32367632367632365,0.3246753246753247,0.3256743256743257,0.32667332667332666,0.3276723276723277,0.32867132867132864,0.32967032967032966,0.3306693306693307,0.33166833166833165,0.33266733266733267,0.3336663336663337,0.33466533466533466,0.3356643356643357,0.33666333666333664,0.33766233766233766,0.3386613386613387,0.33966033966033965,0.34065934065934067,0.34165834165834164,0.34265734265734266,0.3436563436563437,0.34465534465534464,0.34565434565434566,0.34665334665334663,0.34765234765234765,0.34865134865134867,0.34965034965034963,0.35064935064935066,0.3516483516483517,0.35264735264735264,0.35364635364635366,0.3546453546453546,0.35564435564435565,0.35664335664335667,0.35764235764235763,0.35864135864135865,0.3596403596403596,0.36063936063936064,0.36163836163836166,0.3626373626373626,0.36363636363636365,0.3646353646353646,0.36563436563436563,0.36663336663336665,0.3676323676323676,0.36863136863136864,0.3696303696303696,0.3706293706293706,0.37162837162837165,0.3726273726273726,0.37362637362637363,0.37462537462537465,0.3756243756243756,0.37662337662337664,0.3776223776223776,0.3786213786213786,0.37962037962037964,0.3806193806193806,0.38161838161838163,0.3826173826173826,0.3836163836163836,0.38461538461538464,0.3856143856143856,0.3866133866133866,0.3876123876123876,0.3886113886113886,0.38961038961038963,0.3906093906093906,0.3916083916083916,0.3926073926073926,0.3936063936063936,0.3946053946053946,0.3956043956043956,0.3966033966033966,0.39760239760239763,0.3986013986013986,0.3996003996003996,0.4005994005994006,0.4015984015984016,0.4025974025974026,0.4035964035964036,0.4045954045954046,0.40559440559440557,0.4065934065934066,0.4075924075924076,0.4085914085914086,0.4095904095904096,0.41058941058941056,0.4115884115884116,0.4125874125874126,0.41358641358641357,0.4145854145854146,0.4155844155844156,0.4165834165834166,0.4175824175824176,0.41858141858141856,0.4195804195804196,0.4205794205794206,0.42157842157842157,0.4225774225774226,0.42357642357642356,0.4245754245754246,0.4255744255744256,0.42657342657342656,0.4275724275724276,0.42857142857142855,0.42957042957042957,0.4305694305694306,0.43156843156843155,0.4325674325674326,0.43356643356643354,0.43456543456543456,0.4355644355644356,0.43656343656343655,0.43756243756243757,0.4385614385614386,0.43956043956043955,0.4405594405594406,0.44155844155844154,0.44255744255744256,0.4435564435564436,0.44455544455544455,0.44555444555444557,0.44655344655344653,0.44755244755244755,0.4485514485514486,0.44955044955044954,0.45054945054945056,0.4515484515484515,0.45254745254745254,0.45354645354645357,0.45454545454545453,0.45554445554445555,0.4565434565434565,0.45754245754245754,0.45854145854145856,0.4595404595404595,0.46053946053946054,0.46153846153846156,0.46253746253746253,0.46353646353646355,0.4645354645354645,0.46553446553446554,0.46653346653346656,0.4675324675324675,0.46853146853146854,0.4695304695304695,0.47052947052947053,0.47152847152847155,0.4725274725274725,0.47352647352647353,0.4745254745254745,0.4755244755244755,0.47652347652347654,0.4775224775224775,0.4785214785214785,0.47952047952047955,0.4805194805194805,0.48151848151848153,0.4825174825174825,0.4835164835164835,0.48451548451548454,0.4855144855144855,0.4865134865134865,0.4875124875124875,0.4885114885114885,0.48951048951048953,0.4905094905094905,0.4915084915084915,0.4925074925074925,0.4935064935064935,0.4945054945054945,0.4955044955044955,0.4965034965034965,0.4975024975024975,0.4985014985014985,0.4995004995004995,0.5004995004995005,0.5014985014985015,0.5024975024975025,0.5034965034965035,0.5044955044955045,0.5054945054945055,0.5064935064935064,0.5074925074925075,0.5084915084915085,0.5094905094905094,0.5104895104895105,0.5114885114885115,0.5124875124875125,0.5134865134865135,0.5144855144855145,0.5154845154845155,0.5164835164835165,0.5174825174825175,0.5184815184815185,0.5194805194805194,0.5204795204795205,0.5214785214785215,0.5224775224775224,0.5234765234765235,0.5244755244755245,0.5254745254745254,0.5264735264735265,0.5274725274725275,0.5284715284715285,0.5294705294705294,0.5304695304695305,0.5314685314685315,0.5324675324675324,0.5334665334665335,0.5344655344655345,0.5354645354645354,0.5364635364635365,0.5374625374625375,0.5384615384615384,0.5394605394605395,0.5404595404595405,0.5414585414585414,0.5424575424575424,0.5434565434565435,0.5444555444555444,0.5454545454545454,0.5464535464535465,0.5474525474525475,0.5484515484515484,0.5494505494505495,0.5504495504495505,0.5514485514485514,0.5524475524475524,0.5534465534465535,0.5544455544455544,0.5554445554445554,0.5564435564435565,0.5574425574425574,0.5584415584415584,0.5594405594405595,0.5604395604395604,0.5614385614385614,0.5624375624375625,0.5634365634365635,0.5644355644355644,0.5654345654345654,0.5664335664335665,0.5674325674325674,0.5684315684315684,0.5694305694305695,0.5704295704295704,0.5714285714285714,0.5724275724275725,0.5734265734265734,0.5744255744255744,0.5754245754245755,0.5764235764235764,0.5774225774225774,0.5784215784215784,0.5794205794205795,0.5804195804195804,0.5814185814185814,0.5824175824175825,0.5834165834165834,0.5844155844155844,0.5854145854145855,0.5864135864135864,0.5874125874125874,0.5884115884115884,0.5894105894105894,0.5904095904095904,0.5914085914085914,0.5924075924075924,0.5934065934065934,0.5944055944055944,0.5954045954045954,0.5964035964035964,0.5974025974025974,0.5984015984015985,0.5994005994005994,0.6003996003996004,0.6013986013986014,0.6023976023976024,0.6033966033966034,0.6043956043956044,0.6053946053946054,0.6063936063936064,0.6073926073926074,0.6083916083916084,0.6093906093906094,0.6103896103896104,0.6113886113886113,0.6123876123876124,0.6133866133866134,0.6143856143856143,0.6153846153846154,0.6163836163836164,0.6173826173826173,0.6183816183816184,0.6193806193806194,0.6203796203796204,0.6213786213786214,0.6223776223776224,0.6233766233766234,0.6243756243756243,0.6253746253746254,0.6263736263736264,0.6273726273726273,0.6283716283716284,0.6293706293706294,0.6303696303696303,0.6313686313686314,0.6323676323676324,0.6333666333666333,0.6343656343656343,0.6353646353646354,0.6363636363636364,0.6373626373626373,0.6383616383616384,0.6393606393606394,0.6403596403596403,0.6413586413586414,0.6423576423576424,0.6433566433566433,0.6443556443556444,0.6453546453546454,0.6463536463536463,0.6473526473526473,0.6483516483516484,0.6493506493506493,0.6503496503496503,0.6513486513486514,0.6523476523476524,0.6533466533466533,0.6543456543456544,0.6553446553446554,0.6563436563436563,0.6573426573426573,0.6583416583416584,0.6593406593406593,0.6603396603396603,0.6613386613386614,0.6623376623376623,0.6633366633366633,0.6643356643356644,0.6653346653346653,0.6663336663336663,0.6673326673326674,0.6683316683316683,0.6693306693306693,0.6703296703296703,0.6713286713286714,0.6723276723276723,0.6733266733266733,0.6743256743256744,0.6753246753246753,0.6763236763236763,0.6773226773226774,0.6783216783216783,0.6793206793206793,0.6803196803196803,0.6813186813186813,0.6823176823176823,0.6833166833166833,0.6843156843156843,0.6853146853146853,0.6863136863136863,0.6873126873126874,0.6883116883116883,0.6893106893106893,0.6903096903096904,0.6913086913086913,0.6923076923076923,0.6933066933066933,0.6943056943056943,0.6953046953046953,0.6963036963036963,0.6973026973026973,0.6983016983016983,0.6993006993006993,0.7002997002997003,0.7012987012987013,0.7022977022977023,0.7032967032967034,0.7042957042957043,0.7052947052947053,0.7062937062937062,0.7072927072927073,0.7082917082917083,0.7092907092907093,0.7102897102897103,0.7112887112887113,0.7122877122877123,0.7132867132867133,0.7142857142857143,0.7152847152847153,0.7162837162837162,0.7172827172827173,0.7182817182817183,0.7192807192807192,0.7202797202797203,0.7212787212787213,0.7222777222777222,0.7232767232767233,0.7242757242757243,0.7252747252747253,0.7262737262737263,0.7272727272727273,0.7282717282717283,0.7292707292707292,0.7302697302697303,0.7312687312687313,0.7322677322677322,0.7332667332667333,0.7342657342657343,0.7352647352647352,0.7362637362637363,0.7372627372627373,0.7382617382617382,0.7392607392607392,0.7402597402597403,0.7412587412587412,0.7422577422577422,0.7432567432567433,0.7442557442557443,0.7452547452547452,0.7462537462537463,0.7472527472527473,0.7482517482517482,0.7492507492507493,0.7502497502497503,0.7512487512487512,0.7522477522477522,0.7532467532467533,0.7542457542457542,0.7552447552447552,0.7562437562437563,0.7572427572427572,0.7582417582417582,0.7592407592407593,0.7602397602397603,0.7612387612387612,0.7622377622377622,0.7632367632367633,0.7642357642357642,0.7652347652347652,0.7662337662337663,0.7672327672327672,0.7682317682317682,0.7692307692307693,0.7702297702297702,0.7712287712287712,0.7722277722277723,0.7732267732267732,0.7742257742257742,0.7752247752247752,0.7762237762237763,0.7772227772227772,0.7782217782217782,0.7792207792207793,0.7802197802197802,0.7812187812187812,0.7822177822177823,0.7832167832167832,0.7842157842157842,0.7852147852147852,0.7862137862137862,0.7872127872127872,0.7882117882117882,0.7892107892107892,0.7902097902097902,0.7912087912087912,0.7922077922077922,0.7932067932067932,0.7942057942057942,0.7952047952047953,0.7962037962037962,0.7972027972027972,0.7982017982017982,0.7992007992007992,0.8001998001998002,0.8011988011988012,0.8021978021978022,0.8031968031968032,0.8041958041958042,0.8051948051948052,0.8061938061938062,0.8071928071928072,0.8081918081918081,0.8091908091908092,0.8101898101898102,0.8111888111888111,0.8121878121878122,0.8131868131868132,0.8141858141858141,0.8151848151848152,0.8161838161838162,0.8171828171828172,0.8181818181818182,0.8191808191808192,0.8201798201798202,0.8211788211788211,0.8221778221778222,0.8231768231768232,0.8241758241758241,0.8251748251748252,0.8261738261738262,0.8271728271728271,0.8281718281718282,0.8291708291708292,0.8301698301698301,0.8311688311688312,0.8321678321678322,0.8331668331668332,0.8341658341658341,0.8351648351648352,0.8361638361638362,0.8371628371628371,0.8381618381618382,0.8391608391608392,0.8401598401598401,0.8411588411588412,0.8421578421578422,0.8431568431568431,0.8441558441558441,0.8451548451548452,0.8461538461538461,0.8471528471528471,0.8481518481518482,0.8491508491508492,0.8501498501498501,0.8511488511488512,0.8521478521478522,0.8531468531468531,0.8541458541458542,0.8551448551448552,0.8561438561438561,0.8571428571428571,0.8581418581418582,0.8591408591408591,0.8601398601398601,0.8611388611388612,0.8621378621378621,0.8631368631368631,0.8641358641358642,0.8651348651348651,0.8661338661338661,0.8671328671328671,0.8681318681318682,0.8691308691308691,0.8701298701298701,0.8711288711288712,0.8721278721278721,0.8731268731268731,0.8741258741258742,0.8751248751248751,0.8761238761238761,0.8771228771228772,0.8781218781218781,0.8791208791208791,0.8801198801198801,0.8811188811188811,0.8821178821178821,0.8831168831168831,0.8841158841158842,0.8851148851148851,0.8861138861138861,0.8871128871128872,0.8881118881118881,0.8891108891108891,0.8901098901098901,0.8911088911088911,0.8921078921078921,0.8931068931068931,0.8941058941058941,0.8951048951048951,0.8961038961038961,0.8971028971028971,0.8981018981018981,0.8991008991008991,0.9000999000999002,0.9010989010989011,0.9020979020979021,0.903096903096903,0.9040959040959041,0.9050949050949051,0.906093906093906,0.9070929070929071,0.9080919080919081,0.9090909090909091,0.9100899100899101,0.9110889110889111,0.9120879120879121,0.913086913086913,0.9140859140859141,0.9150849150849151,0.916083916083916,0.9170829170829171,0.9180819180819181,0.919080919080919,0.9200799200799201,0.9210789210789211,0.922077922077922,0.9230769230769231,0.9240759240759241,0.9250749250749251,0.926073926073926,0.9270729270729271,0.9280719280719281,0.929070929070929,0.9300699300699301,0.9310689310689311,0.932067932067932,0.9330669330669331,0.9340659340659341,0.935064935064935,0.936063936063936,0.9370629370629371,0.938061938061938,0.939060939060939,0.9400599400599401,0.9410589410589411,0.942057942057942,0.9430569430569431,0.9440559440559441,0.945054945054945,0.9460539460539461,0.9470529470529471,0.948051948051948,0.949050949050949,0.9500499500499501,0.951048951048951,0.952047952047952,0.9530469530469531,0.954045954045954,0.955044955044955,0.9560439560439561,0.957042957042957,0.958041958041958,0.9590409590409591,0.9600399600399601,0.961038961038961,0.962037962037962,0.9630369630369631,0.964035964035964,0.965034965034965,0.9660339660339661,0.967032967032967,0.968031968031968,0.9690309690309691,0.97002997002997,0.971028971028971,0.972027972027972,0.973026973026973,0.974025974025974,0.975024975024975,0.9760239760239761,0.977022977022977,0.978021978021978,0.9790209790209791,0.98001998001998,0.981018981018981,0.9820179820179821,0.983016983016983,0.984015984015984,0.985014985014985,0.986013986013986,0.987012987012987,0.988011988011988,0.989010989010989,0.99000999000999,0.991008991008991,0.9920079920079921,0.993006993006993,0.994005994005994,0.995004995004995,0.996003996003996,0.997002997002997,0.998001998001998,0.999000999000999,1.0]} \ No newline at end of file diff --git a/lib/node_modules/@stdlib/math/base/special/asinf/test/fixtures/julia/runner.jl b/lib/node_modules/@stdlib/math/base/special/asinf/test/fixtures/julia/runner.jl new file mode 100755 index 000000000000..f34dd4cc509c --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/asinf/test/fixtures/julia/runner.jl @@ -0,0 +1,73 @@ +#!/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 = asin.( 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) ); + close( outfile ); +end + +# Get the filename: +file = @__FILE__; + +# Extract the directory in which this file resides: +dir = dirname( file ); + +# Generate fixture data for decimal values: +x = range( -1.0, stop = 1.0, length = 2003 ); +gen( x, "data.json" ); + +# Generate fixture data for small negative values: +x = range( -1e-20, stop = -1e-28, length = 2003 ); +gen( x, "small_negative.json" ); + +# Generate fixture data for small negative values: +x = range( 1e-30, stop = 1e-38, length = 2003 ); +gen( x, "small_positive.json" ); diff --git a/lib/node_modules/@stdlib/math/base/special/asinf/test/fixtures/julia/small_negative.json b/lib/node_modules/@stdlib/math/base/special/asinf/test/fixtures/julia/small_negative.json new file mode 100644 index 000000000000..5d408d8b505d --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/asinf/test/fixtures/julia/small_negative.json @@ -0,0 +1 @@ +{"expected":[-1.0e-20,-9.995004995054944e-21,-9.99000999010989e-21,-9.985014985164834e-21,-9.98001998021978e-21,-9.975024975274724e-21,-9.97002997032967e-21,-9.965034965384615e-21,-9.960039960439559e-21,-9.955044955494505e-21,-9.95004995054945e-21,-9.945054945604395e-21,-9.94005994065934e-21,-9.935064935714286e-21,-9.93006993076923e-21,-9.925074925824176e-21,-9.92007992087912e-21,-9.915084915934065e-21,-9.91008991098901e-21,-9.905094906043955e-21,-9.900099901098901e-21,-9.895104896153845e-21,-9.890109891208791e-21,-9.885114886263736e-21,-9.88011988131868e-21,-9.875124876373626e-21,-9.87012987142857e-21,-9.865134866483516e-21,-9.86013986153846e-21,-9.855144856593407e-21,-9.850149851648351e-21,-9.845154846703297e-21,-9.840159841758241e-21,-9.835164836813186e-21,-9.830169831868132e-21,-9.825174826923076e-21,-9.820179821978022e-21,-9.815184817032966e-21,-9.810189812087912e-21,-9.805194807142857e-21,-9.800199802197801e-21,-9.795204797252747e-21,-9.790209792307691e-21,-9.785214787362637e-21,-9.780219782417582e-21,-9.775224777472528e-21,-9.770229772527472e-21,-9.765234767582416e-21,-9.760239762637362e-21,-9.755244757692307e-21,-9.750249752747253e-21,-9.745254747802197e-21,-9.740259742857143e-21,-9.735264737912087e-21,-9.730269732967033e-21,-9.725274728021978e-21,-9.720279723076922e-21,-9.715284718131868e-21,-9.710289713186812e-21,-9.705294708241758e-21,-9.700299703296703e-21,-9.695304698351648e-21,-9.690309693406593e-21,-9.685314688461537e-21,-9.680319683516483e-21,-9.675324678571428e-21,-9.670329673626373e-21,-9.665334668681318e-21,-9.660339663736264e-21,-9.655344658791208e-21,-9.650349653846154e-21,-9.645354648901098e-21,-9.640359643956043e-21,-9.635364639010989e-21,-9.630369634065933e-21,-9.625374629120879e-21,-9.620379624175823e-21,-9.61538461923077e-21,-9.610389614285714e-21,-9.605394609340658e-21,-9.600399604395604e-21,-9.595404599450548e-21,-9.590409594505494e-21,-9.585414589560439e-21,-9.580419584615385e-21,-9.575424579670329e-21,-9.570429574725273e-21,-9.56543456978022e-21,-9.560439564835164e-21,-9.55544455989011e-21,-9.550449554945054e-21,-9.54545455e-21,-9.540459545054944e-21,-9.53546454010989e-21,-9.530469535164835e-21,-9.525474530219779e-21,-9.520479525274725e-21,-9.51548452032967e-21,-9.510489515384615e-21,-9.50549451043956e-21,-9.500499505494506e-21,-9.49550450054945e-21,-9.490509495604394e-21,-9.48551449065934e-21,-9.480519485714285e-21,-9.47552448076923e-21,-9.470529475824175e-21,-9.465534470879121e-21,-9.460539465934065e-21,-9.455544460989011e-21,-9.450549456043956e-21,-9.4455544510989e-21,-9.440559446153846e-21,-9.43556444120879e-21,-9.430569436263736e-21,-9.42557443131868e-21,-9.420579426373627e-21,-9.415584421428571e-21,-9.410589416483515e-21,-9.405594411538461e-21,-9.400599406593406e-21,-9.395604401648352e-21,-9.390609396703296e-21,-9.385614391758242e-21,-9.380619386813186e-21,-9.37562438186813e-21,-9.370629376923077e-21,-9.365634371978021e-21,-9.360639367032967e-21,-9.355644362087911e-21,-9.350649357142857e-21,-9.345654352197802e-21,-9.340659347252747e-21,-9.335664342307692e-21,-9.330669337362636e-21,-9.325674332417582e-21,-9.320679327472527e-21,-9.315684322527472e-21,-9.310689317582417e-21,-9.305694312637363e-21,-9.300699307692307e-21,-9.295704302747252e-21,-9.290709297802197e-21,-9.285714292857142e-21,-9.280719287912088e-21,-9.275724282967032e-21,-9.270729278021978e-21,-9.265734273076922e-21,-9.260739268131868e-21,-9.255744263186813e-21,-9.250749258241757e-21,-9.245754253296703e-21,-9.240759248351647e-21,-9.235764243406593e-21,-9.230769238461538e-21,-9.225774233516484e-21,-9.220779228571428e-21,-9.215784223626372e-21,-9.210789218681318e-21,-9.205794213736263e-21,-9.200799208791209e-21,-9.195804203846153e-21,-9.190809198901099e-21,-9.185814193956043e-21,-9.180819189010988e-21,-9.175824184065934e-21,-9.170829179120878e-21,-9.165834174175824e-21,-9.160839169230768e-21,-9.155844164285714e-21,-9.150849159340659e-21,-9.145854154395605e-21,-9.140859149450549e-21,-9.135864144505493e-21,-9.13086913956044e-21,-9.125874134615384e-21,-9.12087912967033e-21,-9.115884124725274e-21,-9.11088911978022e-21,-9.105894114835164e-21,-9.100899109890109e-21,-9.095904104945055e-21,-9.090909099999999e-21,-9.085914095054945e-21,-9.08091909010989e-21,-9.075924085164835e-21,-9.07092908021978e-21,-9.065934075274725e-21,-9.06093907032967e-21,-9.055944065384614e-21,-9.05094906043956e-21,-9.045954055494505e-21,-9.04095905054945e-21,-9.035964045604395e-21,-9.030969040659341e-21,-9.025974035714285e-21,-9.02097903076923e-21,-9.015984025824176e-21,-9.01098902087912e-21,-9.005994015934066e-21,-9.00099901098901e-21,-8.996004006043956e-21,-8.9910090010989e-21,-8.986013996153845e-21,-8.981018991208791e-21,-8.976023986263735e-21,-8.971028981318681e-21,-8.966033976373626e-21,-8.961038971428571e-21,-8.956043966483516e-21,-8.951048961538462e-21,-8.946053956593406e-21,-8.94105895164835e-21,-8.936063946703296e-21,-8.931068941758241e-21,-8.926073936813187e-21,-8.921078931868131e-21,-8.916083926923077e-21,-8.911088921978021e-21,-8.906093917032966e-21,-8.901098912087912e-21,-8.896103907142856e-21,-8.891108902197802e-21,-8.886113897252746e-21,-8.881118892307692e-21,-8.876123887362637e-21,-8.871128882417583e-21,-8.866133877472527e-21,-8.861138872527471e-21,-8.856143867582417e-21,-8.851148862637362e-21,-8.846153857692308e-21,-8.841158852747252e-21,-8.836163847802198e-21,-8.831168842857142e-21,-8.826173837912087e-21,-8.821178832967033e-21,-8.816183828021977e-21,-8.811188823076923e-21,-8.806193818131867e-21,-8.801198813186813e-21,-8.796203808241758e-21,-8.791208803296704e-21,-8.786213798351648e-21,-8.781218793406592e-21,-8.776223788461538e-21,-8.771228783516483e-21,-8.766233778571429e-21,-8.761238773626373e-21,-8.756243768681319e-21,-8.751248763736263e-21,-8.746253758791208e-21,-8.741258753846154e-21,-8.736263748901098e-21,-8.731268743956044e-21,-8.726273739010988e-21,-8.721278734065934e-21,-8.716283729120879e-21,-8.711288724175823e-21,-8.706293719230769e-21,-8.701298714285713e-21,-8.696303709340659e-21,-8.691308704395604e-21,-8.68631369945055e-21,-8.681318694505494e-21,-8.67632368956044e-21,-8.671328684615384e-21,-8.666333679670329e-21,-8.661338674725274e-21,-8.656343669780219e-21,-8.651348664835165e-21,-8.646353659890109e-21,-8.641358654945055e-21,-8.63636365e-21,-8.631368645054944e-21,-8.62637364010989e-21,-8.621378635164834e-21,-8.61638363021978e-21,-8.611388625274725e-21,-8.60639362032967e-21,-8.601398615384615e-21,-8.59640361043956e-21,-8.591408605494505e-21,-8.58641360054945e-21,-8.581418595604395e-21,-8.57642359065934e-21,-8.571428585714286e-21,-8.56643358076923e-21,-8.561438575824176e-21,-8.55644357087912e-21,-8.551448565934065e-21,-8.54645356098901e-21,-8.541458556043955e-21,-8.536463551098901e-21,-8.531468546153845e-21,-8.526473541208791e-21,-8.521478536263736e-21,-8.51648353131868e-21,-8.511488526373626e-21,-8.50649352142857e-21,-8.501498516483516e-21,-8.49650351153846e-21,-8.491508506593407e-21,-8.486513501648351e-21,-8.481518496703297e-21,-8.476523491758241e-21,-8.471528486813186e-21,-8.466533481868132e-21,-8.461538476923076e-21,-8.456543471978022e-21,-8.451548467032966e-21,-8.446553462087912e-21,-8.441558457142857e-21,-8.436563452197801e-21,-8.431568447252747e-21,-8.426573442307691e-21,-8.421578437362637e-21,-8.416583432417582e-21,-8.411588427472528e-21,-8.406593422527472e-21,-8.401598417582418e-21,-8.396603412637362e-21,-8.391608407692307e-21,-8.386613402747253e-21,-8.381618397802197e-21,-8.376623392857143e-21,-8.371628387912087e-21,-8.366633382967033e-21,-8.361638378021978e-21,-8.356643373076922e-21,-8.351648368131868e-21,-8.346653363186812e-21,-8.341658358241758e-21,-8.336663353296703e-21,-8.331668348351648e-21,-8.326673343406593e-21,-8.321678338461537e-21,-8.316683333516483e-21,-8.311688328571428e-21,-8.306693323626373e-21,-8.301698318681318e-21,-8.296703313736264e-21,-8.291708308791208e-21,-8.286713303846154e-21,-8.281718298901098e-21,-8.276723293956043e-21,-8.271728289010989e-21,-8.266733284065933e-21,-8.261738279120879e-21,-8.256743274175823e-21,-8.25174826923077e-21,-8.246753264285714e-21,-8.241758259340658e-21,-8.236763254395604e-21,-8.231768249450549e-21,-8.226773244505494e-21,-8.221778239560439e-21,-8.216783234615385e-21,-8.211788229670329e-21,-8.206793224725275e-21,-8.20179821978022e-21,-8.196803214835164e-21,-8.19180820989011e-21,-8.186813204945054e-21,-8.1818182e-21,-8.176823195054944e-21,-8.17182819010989e-21,-8.166833185164835e-21,-8.161838180219779e-21,-8.156843175274725e-21,-8.15184817032967e-21,-8.146853165384615e-21,-8.14185816043956e-21,-8.136863155494506e-21,-8.13186815054945e-21,-8.126873145604394e-21,-8.12187814065934e-21,-8.116883135714285e-21,-8.11188813076923e-21,-8.106893125824175e-21,-8.101898120879121e-21,-8.096903115934065e-21,-8.091908110989011e-21,-8.086913106043956e-21,-8.0819181010989e-21,-8.076923096153846e-21,-8.07192809120879e-21,-8.066933086263736e-21,-8.06193808131868e-21,-8.056943076373627e-21,-8.051948071428571e-21,-8.046953066483515e-21,-8.041958061538461e-21,-8.036963056593406e-21,-8.031968051648352e-21,-8.026973046703296e-21,-8.021978041758242e-21,-8.016983036813186e-21,-8.011988031868132e-21,-8.006993026923077e-21,-8.001998021978021e-21,-7.997003017032967e-21,-7.992008012087911e-21,-7.987013007142857e-21,-7.982018002197802e-21,-7.977022997252747e-21,-7.972027992307692e-21,-7.967032987362636e-21,-7.962037982417582e-21,-7.957042977472527e-21,-7.952047972527472e-21,-7.947052967582417e-21,-7.942057962637363e-21,-7.937062957692307e-21,-7.932067952747252e-21,-7.927072947802197e-21,-7.922077942857142e-21,-7.917082937912088e-21,-7.912087932967032e-21,-7.907092928021978e-21,-7.902097923076922e-21,-7.897102918131868e-21,-7.892107913186813e-21,-7.887112908241757e-21,-7.882117903296703e-21,-7.877122898351647e-21,-7.872127893406593e-21,-7.867132888461538e-21,-7.862137883516484e-21,-7.857142878571428e-21,-7.852147873626373e-21,-7.847152868681318e-21,-7.842157863736263e-21,-7.837162858791209e-21,-7.832167853846153e-21,-7.827172848901099e-21,-7.822177843956043e-21,-7.81718283901099e-21,-7.812187834065934e-21,-7.807192829120878e-21,-7.802197824175824e-21,-7.797202819230768e-21,-7.792207814285714e-21,-7.787212809340659e-21,-7.782217804395605e-21,-7.777222799450549e-21,-7.772227794505493e-21,-7.76723278956044e-21,-7.762237784615384e-21,-7.75724277967033e-21,-7.752247774725274e-21,-7.74725276978022e-21,-7.742257764835164e-21,-7.737262759890109e-21,-7.732267754945055e-21,-7.727272749999999e-21,-7.722277745054945e-21,-7.71728274010989e-21,-7.712287735164835e-21,-7.70729273021978e-21,-7.702297725274726e-21,-7.69730272032967e-21,-7.692307715384614e-21,-7.68731271043956e-21,-7.682317705494505e-21,-7.67732270054945e-21,-7.672327695604395e-21,-7.667332690659341e-21,-7.662337685714285e-21,-7.65734268076923e-21,-7.652347675824176e-21,-7.64735267087912e-21,-7.642357665934066e-21,-7.63736266098901e-21,-7.632367656043956e-21,-7.6273726510989e-21,-7.622377646153846e-21,-7.617382641208791e-21,-7.612387636263735e-21,-7.607392631318681e-21,-7.602397626373626e-21,-7.597402621428571e-21,-7.592407616483516e-21,-7.587412611538462e-21,-7.582417606593406e-21,-7.57742260164835e-21,-7.572427596703296e-21,-7.567432591758241e-21,-7.562437586813187e-21,-7.557442581868131e-21,-7.552447576923077e-21,-7.547452571978021e-21,-7.542457567032966e-21,-7.537462562087912e-21,-7.532467557142856e-21,-7.527472552197802e-21,-7.522477547252746e-21,-7.517482542307692e-21,-7.512487537362637e-21,-7.507492532417583e-21,-7.502497527472527e-21,-7.497502522527471e-21,-7.492507517582417e-21,-7.487512512637362e-21,-7.482517507692308e-21,-7.477522502747252e-21,-7.472527497802198e-21,-7.467532492857142e-21,-7.462537487912087e-21,-7.457542482967033e-21,-7.452547478021977e-21,-7.447552473076923e-21,-7.442557468131867e-21,-7.437562463186813e-21,-7.432567458241758e-21,-7.427572453296704e-21,-7.422577448351648e-21,-7.417582443406592e-21,-7.412587438461538e-21,-7.407592433516483e-21,-7.402597428571429e-21,-7.397602423626373e-21,-7.392607418681319e-21,-7.387612413736263e-21,-7.382617408791208e-21,-7.377622403846154e-21,-7.372627398901098e-21,-7.367632393956044e-21,-7.362637389010988e-21,-7.357642384065934e-21,-7.352647379120879e-21,-7.347652374175823e-21,-7.342657369230769e-21,-7.337662364285713e-21,-7.332667359340659e-21,-7.327672354395604e-21,-7.32267734945055e-21,-7.317682344505494e-21,-7.31268733956044e-21,-7.307692334615384e-21,-7.302697329670329e-21,-7.297702324725275e-21,-7.292707319780219e-21,-7.287712314835165e-21,-7.282717309890109e-21,-7.277722304945055e-21,-7.2727273e-21,-7.267732295054944e-21,-7.26273729010989e-21,-7.257742285164834e-21,-7.25274728021978e-21,-7.247752275274725e-21,-7.24275727032967e-21,-7.237762265384615e-21,-7.232767260439561e-21,-7.227772255494505e-21,-7.22277725054945e-21,-7.217782245604395e-21,-7.21278724065934e-21,-7.207792235714286e-21,-7.20279723076923e-21,-7.197802225824176e-21,-7.19280722087912e-21,-7.187812215934065e-21,-7.182817210989011e-21,-7.177822206043955e-21,-7.172827201098901e-21,-7.167832196153845e-21,-7.162837191208791e-21,-7.157842186263736e-21,-7.15284718131868e-21,-7.147852176373626e-21,-7.14285717142857e-21,-7.137862166483516e-21,-7.132867161538461e-21,-7.127872156593407e-21,-7.122877151648351e-21,-7.117882146703297e-21,-7.112887141758241e-21,-7.107892136813186e-21,-7.102897131868132e-21,-7.097902126923076e-21,-7.092907121978022e-21,-7.087912117032966e-21,-7.082917112087912e-21,-7.077922107142857e-21,-7.072927102197801e-21,-7.067932097252747e-21,-7.062937092307691e-21,-7.057942087362637e-21,-7.052947082417582e-21,-7.047952077472528e-21,-7.042957072527472e-21,-7.037962067582418e-21,-7.032967062637362e-21,-7.027972057692307e-21,-7.022977052747253e-21,-7.017982047802197e-21,-7.012987042857143e-21,-7.007992037912087e-21,-7.002997032967033e-21,-6.998002028021978e-21,-6.993007023076922e-21,-6.988012018131868e-21,-6.983017013186812e-21,-6.978022008241758e-21,-6.973027003296703e-21,-6.968031998351649e-21,-6.963036993406593e-21,-6.958041988461537e-21,-6.953046983516483e-21,-6.948051978571428e-21,-6.943056973626374e-21,-6.938061968681318e-21,-6.933066963736264e-21,-6.928071958791208e-21,-6.923076953846154e-21,-6.918081948901099e-21,-6.913086943956043e-21,-6.908091939010989e-21,-6.903096934065933e-21,-6.898101929120879e-21,-6.893106924175824e-21,-6.88811191923077e-21,-6.883116914285714e-21,-6.878121909340658e-21,-6.873126904395604e-21,-6.868131899450549e-21,-6.863136894505494e-21,-6.858141889560439e-21,-6.853146884615385e-21,-6.848151879670329e-21,-6.843156874725275e-21,-6.83816186978022e-21,-6.833166864835164e-21,-6.82817185989011e-21,-6.823176854945054e-21,-6.81818185e-21,-6.813186845054944e-21,-6.80819184010989e-21,-6.803196835164835e-21,-6.798201830219779e-21,-6.793206825274725e-21,-6.78821182032967e-21,-6.783216815384615e-21,-6.77822181043956e-21,-6.773226805494505e-21,-6.76823180054945e-21,-6.763236795604395e-21,-6.7582417906593404e-21,-6.7532467857142855e-21,-6.748251780769231e-21,-6.743256775824175e-21,-6.73826177087912e-21,-6.7332667659340654e-21,-6.7282717609890105e-21,-6.723276756043956e-21,-6.718281751098901e-21,-6.713286746153846e-21,-6.708291741208791e-21,-6.7032967362637355e-21,-6.698301731318681e-21,-6.693306726373626e-21,-6.688311721428571e-21,-6.683316716483516e-21,-6.678321711538461e-21,-6.6733267065934065e-21,-6.6683317016483516e-21,-6.663336696703296e-21,-6.658341691758241e-21,-6.653346686813186e-21,-6.6483516818681315e-21,-6.6433566769230766e-21,-6.638361671978022e-21,-6.633366667032967e-21,-6.628371662087912e-21,-6.6233766571428565e-21,-6.6183816521978016e-21,-6.613386647252747e-21,-6.608391642307692e-21,-6.603396637362637e-21,-6.598401632417582e-21,-6.593406627472527e-21,-6.5884116225274725e-21,-6.583416617582417e-21,-6.578421612637362e-21,-6.573426607692307e-21,-6.5684316027472524e-21,-6.5634365978021975e-21,-6.558441592857143e-21,-6.553446587912088e-21,-6.548451582967032e-21,-6.5434565780219774e-21,-6.5384615730769225e-21,-6.533466568131868e-21,-6.528471563186813e-21,-6.523476558241758e-21,-6.518481553296703e-21,-6.513486548351648e-21,-6.508491543406593e-21,-6.503496538461538e-21,-6.498501533516483e-21,-6.493506528571428e-21,-6.488511523626373e-21,-6.4835165186813185e-21,-6.4785215137362636e-21,-6.473526508791209e-21,-6.468531503846153e-21,-6.463536498901098e-21,-6.4585414939560435e-21,-6.4535464890109886e-21,-6.448551484065934e-21,-6.443556479120879e-21,-6.438561474175824e-21,-6.433566469230769e-21,-6.4285714642857136e-21,-6.423576459340659e-21,-6.418581454395604e-21,-6.413586449450549e-21,-6.408591444505494e-21,-6.403596439560439e-21,-6.3986014346153845e-21,-6.39360642967033e-21,-6.388611424725274e-21,-6.383616419780219e-21,-6.3786214148351644e-21,-6.3736264098901095e-21,-6.368631404945055e-21,-6.3636364e-21,-6.358641395054945e-21,-6.3536463901098894e-21,-6.3486513851648345e-21,-6.34365638021978e-21,-6.338661375274725e-21,-6.33366637032967e-21,-6.328671365384615e-21,-6.32367636043956e-21,-6.3186813554945054e-21,-6.31368635054945e-21,-6.308691345604395e-21,-6.30369634065934e-21,-6.298701335714285e-21,-6.2937063307692305e-21,-6.2887113258241756e-21,-6.283716320879121e-21,-6.278721315934066e-21,-6.27372631098901e-21,-6.2687313060439555e-21,-6.2637363010989006e-21,-6.258741296153846e-21,-6.253746291208791e-21,-6.248751286263736e-21,-6.243756281318681e-21,-6.238761276373626e-21,-6.233766271428571e-21,-6.228771266483516e-21,-6.223776261538461e-21,-6.218781256593406e-21,-6.213786251648351e-21,-6.2087912467032965e-21,-6.203796241758242e-21,-6.198801236813187e-21,-6.193806231868131e-21,-6.1888112269230764e-21,-6.1838162219780215e-21,-6.178821217032967e-21,-6.173826212087912e-21,-6.168831207142857e-21,-6.163836202197802e-21,-6.158841197252747e-21,-6.153846192307692e-21,-6.148851187362637e-21,-6.143856182417582e-21,-6.138861177472527e-21,-6.133866172527472e-21,-6.1288711675824174e-21,-6.1238761626373626e-21,-6.118881157692307e-21,-6.113886152747252e-21,-6.108891147802197e-21,-6.1038961428571425e-21,-6.0989011379120876e-21,-6.093906132967033e-21,-6.088911128021978e-21,-6.083916123076923e-21,-6.0789211181318675e-21,-6.0739261131868126e-21,-6.068931108241758e-21,-6.063936103296703e-21,-6.058941098351648e-21,-6.053946093406593e-21,-6.048951088461538e-21,-6.0439560835164835e-21,-6.038961078571428e-21,-6.033966073626373e-21,-6.028971068681318e-21,-6.023976063736263e-21,-6.0189810587912085e-21,-6.013986053846154e-21,-6.008991048901099e-21,-6.003996043956044e-21,-5.9990010390109884e-21,-5.9940060340659335e-21,-5.989011029120879e-21,-5.984016024175824e-21,-5.979021019230769e-21,-5.974026014285714e-21,-5.969031009340659e-21,-5.9640360043956044e-21,-5.959040999450549e-21,-5.954045994505494e-21,-5.949050989560439e-21,-5.944055984615384e-21,-5.9390609796703294e-21,-5.9340659747252746e-21,-5.92907096978022e-21,-5.924075964835164e-21,-5.919080959890109e-21,-5.9140859549450544e-21,-5.9090909499999996e-21,-5.904095945054945e-21,-5.89910094010989e-21,-5.894105935164835e-21,-5.88911093021978e-21,-5.8841159252747246e-21,-5.87912092032967e-21,-5.874125915384615e-21,-5.86913091043956e-21,-5.864135905494505e-21,-5.85914090054945e-21,-5.8541458956043955e-21,-5.849150890659341e-21,-5.844155885714285e-21,-5.83916088076923e-21,-5.834165875824175e-21,-5.8291708708791205e-21,-5.824175865934066e-21,-5.819180860989011e-21,-5.814185856043956e-21,-5.809190851098901e-21,-5.8041958461538455e-21,-5.799200841208791e-21,-5.794205836263736e-21,-5.789210831318681e-21,-5.784215826373626e-21,-5.779220821428571e-21,-5.7742258164835164e-21,-5.7692308115384616e-21,-5.764235806593406e-21,-5.759240801648351e-21,-5.754245796703296e-21,-5.7492507917582414e-21,-5.7442557868131866e-21,-5.739260781868132e-21,-5.734265776923077e-21,-5.729270771978021e-21,-5.7242757670329664e-21,-5.7192807620879116e-21,-5.714285757142857e-21,-5.709290752197802e-21,-5.704295747252747e-21,-5.699300742307692e-21,-5.694305737362637e-21,-5.689310732417582e-21,-5.684315727472527e-21,-5.679320722527472e-21,-5.674325717582417e-21,-5.669330712637362e-21,-5.6643357076923075e-21,-5.659340702747253e-21,-5.654345697802198e-21,-5.649350692857142e-21,-5.644355687912087e-21,-5.6393606829670325e-21,-5.634365678021978e-21,-5.629370673076923e-21,-5.624375668131868e-21,-5.619380663186813e-21,-5.614385658241758e-21,-5.609390653296703e-21,-5.604395648351648e-21,-5.599400643406593e-21,-5.594405638461538e-21,-5.589410633516483e-21,-5.5844156285714284e-21,-5.5794206236263736e-21,-5.574425618681319e-21,-5.569430613736263e-21,-5.564435608791208e-21,-5.5594406038461534e-21,-5.5544455989010986e-21,-5.549450593956044e-21,-5.544455589010989e-21,-5.539460584065934e-21,-5.5344655791208784e-21,-5.5294705741758236e-21,-5.524475569230769e-21,-5.519480564285714e-21,-5.514485559340659e-21,-5.509490554395604e-21,-5.504495549450549e-21,-5.4995005445054945e-21,-5.494505539560439e-21,-5.489510534615384e-21,-5.484515529670329e-21,-5.479520524725274e-21,-5.4745255197802195e-21,-5.469530514835165e-21,-5.46453550989011e-21,-5.459540504945055e-21,-5.454545499999999e-21,-5.4495504950549445e-21,-5.44455549010989e-21,-5.439560485164835e-21,-5.43456548021978e-21,-5.429570475274725e-21,-5.42457547032967e-21,-5.4195804653846154e-21,-5.41458546043956e-21,-5.409590455494505e-21,-5.40459545054945e-21,-5.399600445604395e-21,-5.3946054406593404e-21,-5.3896104357142856e-21,-5.384615430769231e-21,-5.379620425824176e-21,-5.37462542087912e-21,-5.3696304159340654e-21,-5.3646354109890106e-21,-5.359640406043956e-21,-5.354645401098901e-21,-5.349650396153846e-21,-5.344655391208791e-21,-5.3396603862637356e-21,-5.334665381318681e-21,-5.329670376373626e-21,-5.324675371428571e-21,-5.319680366483516e-21,-5.314685361538461e-21,-5.3096903565934065e-21,-5.304695351648352e-21,-5.299700346703296e-21,-5.294705341758241e-21,-5.289710336813186e-21,-5.2847153318681315e-21,-5.279720326923077e-21,-5.274725321978022e-21,-5.269730317032967e-21,-5.264735312087912e-21,-5.2597403071428565e-21,-5.254745302197802e-21,-5.249750297252747e-21,-5.244755292307692e-21,-5.239760287362637e-21,-5.234765282417582e-21,-5.2297702774725274e-21,-5.2247752725274726e-21,-5.219780267582417e-21,-5.214785262637362e-21,-5.209790257692307e-21,-5.2047952527472524e-21,-5.1998002478021976e-21,-5.194805242857143e-21,-5.189810237912088e-21,-5.184815232967033e-21,-5.1798202280219774e-21,-5.1748252230769226e-21,-5.169830218131868e-21,-5.164835213186813e-21,-5.159840208241758e-21,-5.154845203296703e-21,-5.149850198351648e-21,-5.1448551934065935e-21,-5.139860188461538e-21,-5.134865183516483e-21,-5.129870178571428e-21,-5.124875173626373e-21,-5.1198801686813185e-21,-5.114885163736264e-21,-5.109890158791209e-21,-5.104895153846153e-21,-5.099900148901098e-21,-5.0949051439560435e-21,-5.089910139010989e-21,-5.084915134065934e-21,-5.079920129120879e-21,-5.074925124175824e-21,-5.069930119230769e-21,-5.064935114285714e-21,-5.059940109340659e-21,-5.054945104395604e-21,-5.049950099450549e-21,-5.044955094505494e-21,-5.0399600895604394e-21,-5.0349650846153846e-21,-5.02997007967033e-21,-5.024975074725274e-21,-5.019980069780219e-21,-5.0149850648351644e-21,-5.0099900598901096e-21,-5.004995054945055e-21,-5.00000005e-21,-4.995005045054945e-21,-4.99001004010989e-21,-4.9850150351648346e-21,-4.98002003021978e-21,-4.975025025274725e-21,-4.97003002032967e-21,-4.965035015384615e-21,-4.96004001043956e-21,-4.9550450054945055e-21,-4.950050000549451e-21,-4.945054995604395e-21,-4.94005999065934e-21,-4.935064985714285e-21,-4.9300699807692305e-21,-4.925074975824176e-21,-4.920079970879121e-21,-4.915084965934066e-21,-4.91008996098901e-21,-4.9050949560439555e-21,-4.900099951098901e-21,-4.895104946153846e-21,-4.890109941208791e-21,-4.885114936263736e-21,-4.880119931318681e-21,-4.8751249263736264e-21,-4.870129921428571e-21,-4.865134916483516e-21,-4.860139911538461e-21,-4.855144906593406e-21,-4.8501499016483514e-21,-4.8451548967032966e-21,-4.840159891758242e-21,-4.835164886813187e-21,-4.830169881868131e-21,-4.8251748769230764e-21,-4.8201798719780216e-21,-4.815184867032967e-21,-4.810189862087912e-21,-4.805194857142857e-21,-4.800199852197802e-21,-4.795204847252747e-21,-4.790209842307692e-21,-4.785214837362637e-21,-4.780219832417582e-21,-4.775224827472527e-21,-4.770229822527472e-21,-4.7652348175824175e-21,-4.760239812637363e-21,-4.755244807692308e-21,-4.750249802747252e-21,-4.745254797802197e-21,-4.7402597928571425e-21,-4.735264787912088e-21,-4.730269782967033e-21,-4.725274778021978e-21,-4.720279773076923e-21,-4.7152847681318675e-21,-4.710289763186813e-21,-4.705294758241758e-21,-4.700299753296703e-21,-4.695304748351648e-21,-4.690309743406593e-21,-4.6853147384615384e-21,-4.6803197335164836e-21,-4.675324728571428e-21,-4.670329723626373e-21,-4.665334718681318e-21,-4.6603397137362634e-21,-4.6553447087912086e-21,-4.650349703846154e-21,-4.645354698901099e-21,-4.640359693956044e-21,-4.6353646890109884e-21,-4.6303696840659336e-21,-4.625374679120879e-21,-4.620379674175824e-21,-4.615384669230769e-21,-4.610389664285714e-21,-4.605394659340659e-21,-4.6003996543956045e-21,-4.595404649450549e-21,-4.590409644505494e-21,-4.585414639560439e-21,-4.580419634615384e-21,-4.5754246296703295e-21,-4.570429624725275e-21,-4.56543461978022e-21,-4.560439614835165e-21,-4.555444609890109e-21,-4.5504496049450545e-21,-4.5454546e-21,-4.540459595054945e-21,-4.53546459010989e-21,-4.530469585164835e-21,-4.52547458021978e-21,-4.520479575274725e-21,-4.51548457032967e-21,-4.510489565384615e-21,-4.50549456043956e-21,-4.500499555494505e-21,-4.4955045505494504e-21,-4.4905095456043956e-21,-4.485514540659341e-21,-4.480519535714285e-21,-4.47552453076923e-21,-4.4705295258241754e-21,-4.4655345208791206e-21,-4.460539515934066e-21,-4.455544510989011e-21,-4.450549506043956e-21,-4.445554501098901e-21,-4.4405594961538456e-21,-4.435564491208791e-21,-4.430569486263736e-21,-4.425574481318681e-21,-4.420579476373626e-21,-4.415584471428571e-21,-4.4105894664835165e-21,-4.405594461538462e-21,-4.400599456593406e-21,-4.395604451648351e-21,-4.390609446703296e-21,-4.3856144417582415e-21,-4.380619436813187e-21,-4.375624431868132e-21,-4.370629426923077e-21,-4.365634421978022e-21,-4.3606394170329665e-21,-4.355644412087912e-21,-4.350649407142857e-21,-4.345654402197802e-21,-4.340659397252747e-21,-4.335664392307692e-21,-4.3306693873626374e-21,-4.325674382417582e-21,-4.320679377472527e-21,-4.315684372527472e-21,-4.310689367582417e-21,-4.3056943626373624e-21,-4.3006993576923076e-21,-4.295704352747253e-21,-4.290709347802198e-21,-4.285714342857142e-21,-4.2807193379120874e-21,-4.2757243329670326e-21,-4.270729328021978e-21,-4.265734323076923e-21,-4.260739318131868e-21,-4.255744313186813e-21,-4.250749308241758e-21,-4.245754303296703e-21,-4.240759298351648e-21,-4.235764293406593e-21,-4.230769288461538e-21,-4.225774283516483e-21,-4.2207792785714285e-21,-4.215784273626374e-21,-4.210789268681319e-21,-4.205794263736263e-21,-4.200799258791208e-21,-4.1958042538461535e-21,-4.190809248901099e-21,-4.185814243956044e-21,-4.180819239010989e-21,-4.175824234065934e-21,-4.170829229120879e-21,-4.165834224175824e-21,-4.160839219230769e-21,-4.155844214285714e-21,-4.150849209340659e-21,-4.145854204395604e-21,-4.1408591994505494e-21,-4.1358641945054946e-21,-4.13086918956044e-21,-4.125874184615384e-21,-4.120879179670329e-21,-4.1158841747252744e-21,-4.1108891697802196e-21,-4.105894164835165e-21,-4.10089915989011e-21,-4.095904154945055e-21,-4.0909091499999994e-21,-4.0859141450549446e-21,-4.08091914010989e-21,-4.075924135164835e-21,-4.07092913021978e-21,-4.065934125274725e-21,-4.06093912032967e-21,-4.0559441153846155e-21,-4.05094911043956e-21,-4.045954105494505e-21,-4.04095910054945e-21,-4.035964095604395e-21,-4.0309690906593405e-21,-4.025974085714286e-21,-4.020979080769231e-21,-4.015984075824176e-21,-4.01098907087912e-21,-4.0059940659340655e-21,-4.000999060989011e-21,-3.996004056043956e-21,-3.991009051098901e-21,-3.986014046153846e-21,-3.981019041208791e-21,-3.9760240362637364e-21,-3.971029031318681e-21,-3.966034026373626e-21,-3.961039021428571e-21,-3.956044016483516e-21,-3.9510490115384614e-21,-3.9460540065934066e-21,-3.941059001648352e-21,-3.936063996703297e-21,-3.931068991758241e-21,-3.9260739868131864e-21,-3.9210789818681316e-21,-3.916083976923077e-21,-3.911088971978022e-21,-3.906093967032967e-21,-3.901098962087912e-21,-3.8961039571428566e-21,-3.891108952197802e-21,-3.886113947252747e-21,-3.881118942307692e-21,-3.876123937362637e-21,-3.871128932417582e-21,-3.8661339274725275e-21,-3.861138922527473e-21,-3.856143917582417e-21,-3.851148912637362e-21,-3.846153907692307e-21,-3.8411589027472525e-21,-3.836163897802198e-21,-3.831168892857143e-21,-3.826173887912088e-21,-3.821178882967033e-21,-3.8161838780219775e-21,-3.811188873076923e-21,-3.806193868131868e-21,-3.801198863186813e-21,-3.796203858241758e-21,-3.791208853296703e-21,-3.7862138483516484e-21,-3.7812188434065935e-21,-3.776223838461538e-21,-3.771228833516483e-21,-3.766233828571428e-21,-3.7612388236263734e-21,-3.7562438186813186e-21,-3.751248813736264e-21,-3.746253808791209e-21,-3.741258803846154e-21,-3.7362637989010984e-21,-3.7312687939560436e-21,-3.726273789010989e-21,-3.721278784065934e-21,-3.716283779120879e-21,-3.711288774175824e-21,-3.706293769230769e-21,-3.701298764285714e-21,-3.696303759340659e-21,-3.691308754395604e-21,-3.686313749450549e-21,-3.681318744505494e-21,-3.6763237395604395e-21,-3.671328734615385e-21,-3.66633372967033e-21,-3.661338724725274e-21,-3.656343719780219e-21,-3.6513487148351645e-21,-3.64635370989011e-21,-3.641358704945055e-21,-3.6363637e-21,-3.631368695054945e-21,-3.62637369010989e-21,-3.621378685164835e-21,-3.61638368021978e-21,-3.611388675274725e-21,-3.60639367032967e-21,-3.601398665384615e-21,-3.5964036604395604e-21,-3.5914086554945055e-21,-3.586413650549451e-21,-3.581418645604395e-21,-3.57642364065934e-21,-3.5714286357142854e-21,-3.5664336307692306e-21,-3.561438625824176e-21,-3.556443620879121e-21,-3.551448615934066e-21,-3.546453610989011e-21,-3.5414586060439556e-21,-3.536463601098901e-21,-3.531468596153846e-21,-3.526473591208791e-21,-3.521478586263736e-21,-3.516483581318681e-21,-3.5114885763736265e-21,-3.506493571428571e-21,-3.501498566483516e-21,-3.496503561538461e-21,-3.491508556593406e-21,-3.4865135516483515e-21,-3.4815185467032966e-21,-3.476523541758242e-21,-3.471528536813187e-21,-3.466533531868131e-21,-3.4615385269230765e-21,-3.456543521978022e-21,-3.451548517032967e-21,-3.446553512087912e-21,-3.441558507142857e-21,-3.436563502197802e-21,-3.4315684972527474e-21,-3.426573492307692e-21,-3.421578487362637e-21,-3.416583482417582e-21,-3.411588477472527e-21,-3.4065934725274724e-21,-3.4015984675824175e-21,-3.396603462637363e-21,-3.391608457692308e-21,-3.3866134527472526e-21,-3.3816184478021978e-21,-3.3766234428571425e-21,-3.3716284379120877e-21,-3.366633432967033e-21,-3.361638428021978e-21,-3.3566434230769228e-21,-3.351648418131868e-21,-3.346653413186813e-21,-3.3416584082417582e-21,-3.336663403296703e-21,-3.331668398351648e-21,-3.3266733934065933e-21,-3.3216783884615385e-21,-3.3166833835164832e-21,-3.3116883785714284e-21,-3.3066933736263735e-21,-3.3016983686813183e-21,-3.2967033637362635e-21,-3.2917083587912086e-21,-3.2867133538461538e-21,-3.2817183489010985e-21,-3.2767233439560437e-21,-3.271728339010989e-21,-3.266733334065934e-21,-3.2617383291208788e-21,-3.256743324175824e-21,-3.251748319230769e-21,-3.2467533142857142e-21,-3.241758309340659e-21,-3.236763304395604e-21,-3.2317682994505493e-21,-3.2267732945054945e-21,-3.2217782895604392e-21,-3.2167832846153844e-21,-3.2117882796703295e-21,-3.2067932747252747e-21,-3.2017982697802195e-21,-3.1968032648351646e-21,-3.1918082598901098e-21,-3.186813254945055e-21,-3.1818182499999997e-21,-3.176823245054945e-21,-3.17182824010989e-21,-3.166833235164835e-21,-3.16183823021978e-21,-3.156843225274725e-21,-3.1518482203296702e-21,-3.1468532153846154e-21,-3.14185821043956e-21,-3.1368632054945053e-21,-3.1318682005494505e-21,-3.1268731956043956e-21,-3.1218781906593404e-21,-3.1168831857142855e-21,-3.1118881807692307e-21,-3.1068931758241755e-21,-3.1018981708791206e-21,-3.0969031659340658e-21,-3.091908160989011e-21,-3.0869131560439557e-21,-3.081918151098901e-21,-3.076923146153846e-21,-3.071928141208791e-21,-3.066933136263736e-21,-3.061938131318681e-21,-3.0569431263736262e-21,-3.0519481214285714e-21,-3.046953116483516e-21,-3.0419581115384613e-21,-3.0369631065934065e-21,-3.0319681016483516e-21,-3.0269730967032964e-21,-3.0219780917582415e-21,-3.0169830868131867e-21,-3.011988081868132e-21,-3.0069930769230766e-21,-3.0019980719780218e-21,-2.997003067032967e-21,-2.992008062087912e-21,-2.987013057142857e-21,-2.982018052197802e-21,-2.977023047252747e-21,-2.9720280423076923e-21,-2.967033037362637e-21,-2.9620380324175822e-21,-2.9570430274725274e-21,-2.9520480225274725e-21,-2.9470530175824173e-21,-2.9420580126373625e-21,-2.9370630076923076e-21,-2.9320680027472528e-21,-2.9270729978021975e-21,-2.9220779928571427e-21,-2.917082987912088e-21,-2.912087982967033e-21,-2.9070929780219778e-21,-2.902097973076923e-21,-2.897102968131868e-21,-2.892107963186813e-21,-2.887112958241758e-21,-2.882117953296703e-21,-2.8771229483516483e-21,-2.872127943406593e-21,-2.8671329384615382e-21,-2.8621379335164834e-21,-2.8571429285714285e-21,-2.8521479236263733e-21,-2.8471529186813185e-21,-2.8421579137362636e-21,-2.8371629087912088e-21,-2.8321679038461535e-21,-2.8271728989010987e-21,-2.822177893956044e-21,-2.817182889010989e-21,-2.8121878840659338e-21,-2.807192879120879e-21,-2.802197874175824e-21,-2.7972028692307692e-21,-2.792207864285714e-21,-2.787212859340659e-21,-2.7822178543956043e-21,-2.7772228494505495e-21,-2.7722278445054942e-21,-2.7672328395604394e-21,-2.7622378346153845e-21,-2.7572428296703297e-21,-2.7522478247252745e-21,-2.7472528197802196e-21,-2.7422578148351648e-21,-2.73726280989011e-21,-2.7322678049450547e-21,-2.7272728e-21,-2.722277795054945e-21,-2.71728279010989e-21,-2.712287785164835e-21,-2.70729278021978e-21,-2.7022977752747252e-21,-2.69730277032967e-21,-2.692307765384615e-21,-2.6873127604395603e-21,-2.6823177554945055e-21,-2.6773227505494502e-21,-2.6723277456043954e-21,-2.6673327406593405e-21,-2.6623377357142857e-21,-2.6573427307692305e-21,-2.6523477258241756e-21,-2.6473527208791208e-21,-2.642357715934066e-21,-2.6373627109890107e-21,-2.632367706043956e-21,-2.627372701098901e-21,-2.622377696153846e-21,-2.617382691208791e-21,-2.612387686263736e-21,-2.6073926813186812e-21,-2.6023976763736264e-21,-2.597402671428571e-21,-2.5924076664835163e-21,-2.5874126615384615e-21,-2.5824176565934066e-21,-2.5774226516483514e-21,-2.5724276467032965e-21,-2.5674326417582417e-21,-2.562437636813187e-21,-2.5574426318681316e-21,-2.5524476269230768e-21,-2.547452621978022e-21,-2.542457617032967e-21,-2.537462612087912e-21,-2.532467607142857e-21,-2.527472602197802e-21,-2.5224775972527473e-21,-2.517482592307692e-21,-2.5124875873626372e-21,-2.5074925824175824e-21,-2.502497577472527e-21,-2.4975025725274723e-21,-2.4925075675824175e-21,-2.4875125626373626e-21,-2.4825175576923074e-21,-2.4775225527472525e-21,-2.4725275478021977e-21,-2.467532542857143e-21,-2.4625375379120876e-21,-2.4575425329670328e-21,-2.452547528021978e-21,-2.447552523076923e-21,-2.442557518131868e-21,-2.437562513186813e-21,-2.432567508241758e-21,-2.4275725032967033e-21,-2.422577498351648e-21,-2.4175824934065932e-21,-2.4125874884615384e-21,-2.4075924835164835e-21,-2.4025974785714283e-21,-2.3976024736263735e-21,-2.3926074686813186e-21,-2.3876124637362638e-21,-2.3826174587912085e-21,-2.3776224538461537e-21,-2.372627448901099e-21,-2.367632443956044e-21,-2.3626374390109888e-21,-2.357642434065934e-21,-2.352647429120879e-21,-2.3476524241758242e-21,-2.342657419230769e-21,-2.337662414285714e-21,-2.3326674093406593e-21,-2.3276724043956044e-21,-2.3226773994505492e-21,-2.3176823945054944e-21,-2.3126873895604395e-21,-2.3076923846153847e-21,-2.3026973796703295e-21,-2.2977023747252746e-21,-2.2927073697802198e-21,-2.2877123648351645e-21,-2.2827173598901097e-21,-2.277722354945055e-21,-2.27272735e-21,-2.2677323450549448e-21,-2.26273734010989e-21,-2.257742335164835e-21,-2.2527473302197802e-21,-2.247752325274725e-21,-2.24275732032967e-21,-2.2377623153846153e-21,-2.2327673104395604e-21,-2.2277723054945052e-21,-2.2227773005494504e-21,-2.2177822956043955e-21,-2.2127872906593407e-21,-2.2077922857142854e-21,-2.2027972807692306e-21,-2.1978022758241758e-21,-2.192807270879121e-21,-2.1878122659340657e-21,-2.182817260989011e-21,-2.177822256043956e-21,-2.172827251098901e-21,-2.167832246153846e-21,-2.162837241208791e-21,-2.1578422362637362e-21,-2.1528472313186814e-21,-2.147852226373626e-21,-2.1428572214285713e-21,-2.1378622164835164e-21,-2.1328672115384616e-21,-2.1278722065934064e-21,-2.1228772016483515e-21,-2.1178821967032967e-21,-2.112887191758242e-21,-2.1078921868131866e-21,-2.1028971818681318e-21,-2.097902176923077e-21,-2.0929071719780217e-21,-2.087912167032967e-21,-2.082917162087912e-21,-2.077922157142857e-21,-2.072927152197802e-21,-2.067932147252747e-21,-2.0629371423076922e-21,-2.0579421373626374e-21,-2.052947132417582e-21,-2.0479521274725273e-21,-2.0429571225274724e-21,-2.0379621175824176e-21,-2.0329671126373624e-21,-2.0279721076923075e-21,-2.0229771027472527e-21,-2.017982097802198e-21,-2.0129870928571426e-21,-2.0079920879120878e-21,-2.002997082967033e-21,-1.998002078021978e-21,-1.993007073076923e-21,-1.988012068131868e-21,-1.983017063186813e-21,-1.9780220582417583e-21,-1.973027053296703e-21,-1.9680320483516482e-21,-1.9630370434065934e-21,-1.9580420384615385e-21,-1.9530470335164833e-21,-1.9480520285714284e-21,-1.9430570236263736e-21,-1.9380620186813187e-21,-1.9330670137362635e-21,-1.9280720087912087e-21,-1.923077003846154e-21,-1.918081998901099e-21,-1.9130869939560438e-21,-1.908091989010989e-21,-1.903096984065934e-21,-1.898101979120879e-21,-1.893106974175824e-21,-1.888111969230769e-21,-1.8831169642857143e-21,-1.878121959340659e-21,-1.8731269543956042e-21,-1.8681319494505494e-21,-1.8631369445054945e-21,-1.8581419395604393e-21,-1.8531469346153844e-21,-1.8481519296703296e-21,-1.8431569247252747e-21,-1.8381619197802195e-21,-1.8331669148351647e-21,-1.82817190989011e-21,-1.823176904945055e-21,-1.8181818999999997e-21,-1.813186895054945e-21,-1.80819189010989e-21,-1.8031968851648352e-21,-1.79820188021978e-21,-1.793206875274725e-21,-1.7882118703296703e-21,-1.7832168653846154e-21,-1.7782218604395602e-21,-1.7732268554945054e-21,-1.7682318505494505e-21,-1.7632368456043957e-21,-1.7582418406593404e-21,-1.7532468357142856e-21,-1.7482518307692307e-21,-1.743256825824176e-21,-1.7382618208791207e-21,-1.733266815934066e-21,-1.728271810989011e-21,-1.723276806043956e-21,-1.718281801098901e-21,-1.713286796153846e-21,-1.7082917912087912e-21,-1.7032967862637364e-21,-1.698301781318681e-21,-1.6933067763736263e-21,-1.6883117714285712e-21,-1.6833167664835164e-21,-1.6783217615384614e-21,-1.6733267565934065e-21,-1.6683317516483515e-21,-1.6633367467032966e-21,-1.6583417417582416e-21,-1.6533467368131867e-21,-1.6483517318681317e-21,-1.6433567269230769e-21,-1.6383617219780218e-21,-1.633366717032967e-21,-1.628371712087912e-21,-1.623376707142857e-21,-1.618381702197802e-21,-1.6133866972527472e-21,-1.6083916923076922e-21,-1.6033966873626373e-21,-1.5984016824175823e-21,-1.5934066774725274e-21,-1.5884116725274724e-21,-1.5834166675824175e-21,-1.5784216626373625e-21,-1.5734266576923077e-21,-1.5684316527472526e-21,-1.5634366478021978e-21,-1.5584416428571427e-21,-1.5534466379120879e-21,-1.5484516329670329e-21,-1.543456628021978e-21,-1.538461623076923e-21,-1.5334666181318681e-21,-1.528471613186813e-21,-1.5234766082417582e-21,-1.5184816032967032e-21,-1.5134865983516484e-21,-1.5084915934065933e-21,-1.5034965884615385e-21,-1.4985015835164834e-21,-1.4935065785714286e-21,-1.4885115736263735e-21,-1.4835165686813185e-21,-1.4785215637362637e-21,-1.4735265587912086e-21,-1.4685315538461538e-21,-1.4635365489010987e-21,-1.4585415439560439e-21,-1.4535465390109889e-21,-1.448551534065934e-21,-1.443556529120879e-21,-1.4385615241758241e-21,-1.433566519230769e-21,-1.4285715142857142e-21,-1.4235765093406592e-21,-1.4185815043956044e-21,-1.4135864994505493e-21,-1.4085914945054945e-21,-1.4035964895604394e-21,-1.3986014846153846e-21,-1.3936064796703295e-21,-1.3886114747252747e-21,-1.3836164697802197e-21,-1.3786214648351648e-21,-1.3736264598901098e-21,-1.368631454945055e-21,-1.3636364499999999e-21,-1.358641445054945e-21,-1.35364644010989e-21,-1.3486514351648352e-21,-1.3436564302197801e-21,-1.3386614252747253e-21,-1.3336664203296702e-21,-1.3286714153846154e-21,-1.3236764104395604e-21,-1.3186814054945055e-21,-1.3136864005494505e-21,-1.3086913956043956e-21,-1.3036963906593406e-21,-1.2987013857142857e-21,-1.2937063807692307e-21,-1.2887113758241757e-21,-1.2837163708791208e-21,-1.2787213659340658e-21,-1.273726360989011e-21,-1.2687313560439559e-21,-1.263736351098901e-21,-1.258741346153846e-21,-1.2537463412087912e-21,-1.2487513362637361e-21,-1.2437563313186813e-21,-1.2387613263736262e-21,-1.2337663214285714e-21,-1.2287713164835164e-21,-1.2237763115384615e-21,-1.2187813065934065e-21,-1.2137863016483516e-21,-1.2087912967032966e-21,-1.2037962917582417e-21,-1.1988012868131867e-21,-1.1938062818681318e-21,-1.1888112769230768e-21,-1.183816271978022e-21,-1.178821267032967e-21,-1.173826262087912e-21,-1.168831257142857e-21,-1.1638362521978022e-21,-1.1588412472527472e-21,-1.1538462423076923e-21,-1.1488512373626373e-21,-1.1438562324175824e-21,-1.1388612274725274e-21,-1.1338662225274725e-21,-1.1288712175824175e-21,-1.1238762126373627e-21,-1.1188812076923076e-21,-1.1138862027472528e-21,-1.1088911978021977e-21,-1.1038961928571429e-21,-1.0989011879120878e-21,-1.093906182967033e-21,-1.088911178021978e-21,-1.083916173076923e-21,-1.078921168131868e-21,-1.073926163186813e-21,-1.0689311582417582e-21,-1.0639361532967032e-21,-1.0589411483516483e-21,-1.0539461434065933e-21,-1.0489511384615384e-21,-1.0439561335164834e-21,-1.0389611285714285e-21,-1.0339661236263735e-21,-1.0289711186813187e-21,-1.0239761137362636e-21,-1.0189811087912088e-21,-1.0139861038461537e-21,-1.0089910989010989e-21,-1.0039960939560438e-21,-9.99001089010989e-22,-9.94006084065934e-22,-9.890110791208791e-22,-9.84016074175824e-22,-9.790210692307692e-22,-9.740260642857142e-22,-9.690310593406593e-22,-9.640360543956043e-22,-9.590410494505495e-22,-9.540460445054944e-22,-9.490510395604396e-22,-9.440560346153845e-22,-9.390610296703297e-22,-9.340660247252747e-22,-9.290710197802198e-22,-9.240760148351648e-22,-9.1908100989011e-22,-9.140860049450549e-22,-9.09091e-22,-9.04095995054945e-22,-8.991009901098901e-22,-8.941059851648351e-22,-8.891109802197803e-22,-8.841159752747252e-22,-8.791209703296702e-22,-8.741259653846153e-22,-8.691309604395603e-22,-8.641359554945055e-22,-8.591409505494504e-22,-8.541459456043956e-22,-8.491509406593405e-22,-8.441559357142857e-22,-8.391609307692307e-22,-8.341659258241758e-22,-8.291709208791209e-22,-8.241759159340659e-22,-8.19180910989011e-22,-8.14185906043956e-22,-8.091909010989011e-22,-8.0419589615384615e-22,-7.992008912087912e-22,-7.942058862637363e-22,-7.892108813186813e-22,-7.842158763736263e-22,-7.792208714285713e-22,-7.742258664835164e-22,-7.692308615384615e-22,-7.642358565934065e-22,-7.592408516483516e-22,-7.542458467032966e-22,-7.492508417582417e-22,-7.442558368131867e-22,-7.392608318681318e-22,-7.342658269230769e-22,-7.292708219780219e-22,-7.24275817032967e-22,-7.19280812087912e-22,-7.142858071428571e-22,-7.092908021978021e-22,-7.042957972527472e-22,-6.993007923076923e-22,-6.943057873626373e-22,-6.893107824175824e-22,-6.843157774725274e-22,-6.793207725274725e-22,-6.7432576758241755e-22,-6.693307626373626e-22,-6.643357576923077e-22,-6.593407527472527e-22,-6.543457478021978e-22,-6.493507428571428e-22,-6.443557379120879e-22,-6.3936073296703295e-22,-6.34365728021978e-22,-6.293707230769231e-22,-6.243757181318681e-22,-6.193807131868132e-22,-6.143857082417582e-22,-6.093907032967033e-22,-6.043956983516484e-22,-5.994006934065934e-22,-5.944056884615385e-22,-5.894106835164835e-22,-5.844156785714286e-22,-5.7942067362637355e-22,-5.744256686813186e-22,-5.694306637362637e-22,-5.644356587912087e-22,-5.594406538461538e-22,-5.544456489010988e-22,-5.494506439560439e-22,-5.4445563901098895e-22,-5.39460634065934e-22,-5.344656291208791e-22,-5.294706241758241e-22,-5.244756192307692e-22,-5.194806142857142e-22,-5.144856093406593e-22,-5.094906043956044e-22,-5.044955994505494e-22,-4.995005945054945e-22,-4.945055895604395e-22,-4.895105846153846e-22,-4.845155796703296e-22,-4.795205747252747e-22,-4.745255697802198e-22,-4.695305648351648e-22,-4.645355598901099e-22,-4.595405549450549e-22,-4.5454555e-22,-4.49550545054945e-22,-4.445555401098901e-22,-4.395605351648352e-22,-4.345655302197802e-22,-4.295705252747253e-22,-4.245755203296703e-22,-4.1958051538461534e-22,-4.145855104395604e-22,-4.0959050549450546e-22,-4.045955005494505e-22,-3.9960049560439557e-22,-3.9460549065934063e-22,-3.896104857142857e-22,-3.8461548076923075e-22,-3.796204758241758e-22,-3.7462547087912086e-22,-3.696304659340659e-22,-3.6463546098901098e-22,-3.5964045604395603e-22,-3.546454510989011e-22,-3.4965044615384615e-22,-3.446554412087912e-22,-3.3966043626373626e-22,-3.346654313186813e-22,-3.296704263736264e-22,-3.246754214285714e-22,-3.1968041648351645e-22,-3.146854115384615e-22,-3.0969040659340656e-22,-3.046954016483516e-22,-2.997003967032967e-22,-2.9470539175824173e-22,-2.897103868131868e-22,-2.8471538186813185e-22,-2.797203769230769e-22,-2.7472537197802196e-22,-2.69730367032967e-22,-2.647353620879121e-22,-2.5974035714285714e-22,-2.547453521978022e-22,-2.4975034725274725e-22,-2.447553423076923e-22,-2.3976033736263737e-22,-2.3476533241758242e-22,-2.297703274725275e-22,-2.247753225274725e-22,-2.1978031758241755e-22,-2.147853126373626e-22,-2.097903076923077e-22,-2.0479530274725275e-22,-1.9980029780219778e-22,-1.9480529285714284e-22,-1.898102879120879e-22,-1.8481528296703295e-22,-1.79820278021978e-22,-1.7482527307692307e-22,-1.6983026813186813e-22,-1.6483526318681318e-22,-1.5984025824175824e-22,-1.548452532967033e-22,-1.4985024835164833e-22,-1.448552434065934e-22,-1.3986023846153845e-22,-1.348652335164835e-22,-1.2987022857142856e-22,-1.2487522362637362e-22,-1.1988021868131868e-22,-1.1488521373626374e-22,-1.098902087912088e-22,-1.0489520384615384e-22,-9.99001989010989e-23,-9.490519395604395e-23,-8.991018901098901e-23,-8.491518406593406e-23,-7.992017912087911e-23,-7.492517417582417e-23,-6.993016923076923e-23,-6.493516428571429e-23,-5.994015934065933e-23,-5.494515439560439e-23,-4.995014945054945e-23,-4.4955144505494505e-23,-3.9960139560439557e-23,-3.4965134615384615e-23,-2.9970129670329666e-23,-2.4975124725274724e-23,-1.9980119780219778e-23,-1.4985114835164833e-23,-9.990109890109889e-24,-4.995104945054945e-24,-1.0e-28],"x":[-1.0e-20,-9.995004995054944e-21,-9.99000999010989e-21,-9.985014985164834e-21,-9.98001998021978e-21,-9.975024975274724e-21,-9.97002997032967e-21,-9.965034965384615e-21,-9.960039960439559e-21,-9.955044955494505e-21,-9.95004995054945e-21,-9.945054945604395e-21,-9.94005994065934e-21,-9.935064935714286e-21,-9.93006993076923e-21,-9.925074925824176e-21,-9.92007992087912e-21,-9.915084915934065e-21,-9.91008991098901e-21,-9.905094906043955e-21,-9.900099901098901e-21,-9.895104896153845e-21,-9.890109891208791e-21,-9.885114886263736e-21,-9.88011988131868e-21,-9.875124876373626e-21,-9.87012987142857e-21,-9.865134866483516e-21,-9.86013986153846e-21,-9.855144856593407e-21,-9.850149851648351e-21,-9.845154846703297e-21,-9.840159841758241e-21,-9.835164836813186e-21,-9.830169831868132e-21,-9.825174826923076e-21,-9.820179821978022e-21,-9.815184817032966e-21,-9.810189812087912e-21,-9.805194807142857e-21,-9.800199802197801e-21,-9.795204797252747e-21,-9.790209792307691e-21,-9.785214787362637e-21,-9.780219782417582e-21,-9.775224777472528e-21,-9.770229772527472e-21,-9.765234767582416e-21,-9.760239762637362e-21,-9.755244757692307e-21,-9.750249752747253e-21,-9.745254747802197e-21,-9.740259742857143e-21,-9.735264737912087e-21,-9.730269732967033e-21,-9.725274728021978e-21,-9.720279723076922e-21,-9.715284718131868e-21,-9.710289713186812e-21,-9.705294708241758e-21,-9.700299703296703e-21,-9.695304698351648e-21,-9.690309693406593e-21,-9.685314688461537e-21,-9.680319683516483e-21,-9.675324678571428e-21,-9.670329673626373e-21,-9.665334668681318e-21,-9.660339663736264e-21,-9.655344658791208e-21,-9.650349653846154e-21,-9.645354648901098e-21,-9.640359643956043e-21,-9.635364639010989e-21,-9.630369634065933e-21,-9.625374629120879e-21,-9.620379624175823e-21,-9.61538461923077e-21,-9.610389614285714e-21,-9.605394609340658e-21,-9.600399604395604e-21,-9.595404599450548e-21,-9.590409594505494e-21,-9.585414589560439e-21,-9.580419584615385e-21,-9.575424579670329e-21,-9.570429574725273e-21,-9.56543456978022e-21,-9.560439564835164e-21,-9.55544455989011e-21,-9.550449554945054e-21,-9.54545455e-21,-9.540459545054944e-21,-9.53546454010989e-21,-9.530469535164835e-21,-9.525474530219779e-21,-9.520479525274725e-21,-9.51548452032967e-21,-9.510489515384615e-21,-9.50549451043956e-21,-9.500499505494506e-21,-9.49550450054945e-21,-9.490509495604394e-21,-9.48551449065934e-21,-9.480519485714285e-21,-9.47552448076923e-21,-9.470529475824175e-21,-9.465534470879121e-21,-9.460539465934065e-21,-9.455544460989011e-21,-9.450549456043956e-21,-9.4455544510989e-21,-9.440559446153846e-21,-9.43556444120879e-21,-9.430569436263736e-21,-9.42557443131868e-21,-9.420579426373627e-21,-9.415584421428571e-21,-9.410589416483515e-21,-9.405594411538461e-21,-9.400599406593406e-21,-9.395604401648352e-21,-9.390609396703296e-21,-9.385614391758242e-21,-9.380619386813186e-21,-9.37562438186813e-21,-9.370629376923077e-21,-9.365634371978021e-21,-9.360639367032967e-21,-9.355644362087911e-21,-9.350649357142857e-21,-9.345654352197802e-21,-9.340659347252747e-21,-9.335664342307692e-21,-9.330669337362636e-21,-9.325674332417582e-21,-9.320679327472527e-21,-9.315684322527472e-21,-9.310689317582417e-21,-9.305694312637363e-21,-9.300699307692307e-21,-9.295704302747252e-21,-9.290709297802197e-21,-9.285714292857142e-21,-9.280719287912088e-21,-9.275724282967032e-21,-9.270729278021978e-21,-9.265734273076922e-21,-9.260739268131868e-21,-9.255744263186813e-21,-9.250749258241757e-21,-9.245754253296703e-21,-9.240759248351647e-21,-9.235764243406593e-21,-9.230769238461538e-21,-9.225774233516484e-21,-9.220779228571428e-21,-9.215784223626372e-21,-9.210789218681318e-21,-9.205794213736263e-21,-9.200799208791209e-21,-9.195804203846153e-21,-9.190809198901099e-21,-9.185814193956043e-21,-9.180819189010988e-21,-9.175824184065934e-21,-9.170829179120878e-21,-9.165834174175824e-21,-9.160839169230768e-21,-9.155844164285714e-21,-9.150849159340659e-21,-9.145854154395605e-21,-9.140859149450549e-21,-9.135864144505493e-21,-9.13086913956044e-21,-9.125874134615384e-21,-9.12087912967033e-21,-9.115884124725274e-21,-9.11088911978022e-21,-9.105894114835164e-21,-9.100899109890109e-21,-9.095904104945055e-21,-9.090909099999999e-21,-9.085914095054945e-21,-9.08091909010989e-21,-9.075924085164835e-21,-9.07092908021978e-21,-9.065934075274725e-21,-9.06093907032967e-21,-9.055944065384614e-21,-9.05094906043956e-21,-9.045954055494505e-21,-9.04095905054945e-21,-9.035964045604395e-21,-9.030969040659341e-21,-9.025974035714285e-21,-9.02097903076923e-21,-9.015984025824176e-21,-9.01098902087912e-21,-9.005994015934066e-21,-9.00099901098901e-21,-8.996004006043956e-21,-8.9910090010989e-21,-8.986013996153845e-21,-8.981018991208791e-21,-8.976023986263735e-21,-8.971028981318681e-21,-8.966033976373626e-21,-8.961038971428571e-21,-8.956043966483516e-21,-8.951048961538462e-21,-8.946053956593406e-21,-8.94105895164835e-21,-8.936063946703296e-21,-8.931068941758241e-21,-8.926073936813187e-21,-8.921078931868131e-21,-8.916083926923077e-21,-8.911088921978021e-21,-8.906093917032966e-21,-8.901098912087912e-21,-8.896103907142856e-21,-8.891108902197802e-21,-8.886113897252746e-21,-8.881118892307692e-21,-8.876123887362637e-21,-8.871128882417583e-21,-8.866133877472527e-21,-8.861138872527471e-21,-8.856143867582417e-21,-8.851148862637362e-21,-8.846153857692308e-21,-8.841158852747252e-21,-8.836163847802198e-21,-8.831168842857142e-21,-8.826173837912087e-21,-8.821178832967033e-21,-8.816183828021977e-21,-8.811188823076923e-21,-8.806193818131867e-21,-8.801198813186813e-21,-8.796203808241758e-21,-8.791208803296704e-21,-8.786213798351648e-21,-8.781218793406592e-21,-8.776223788461538e-21,-8.771228783516483e-21,-8.766233778571429e-21,-8.761238773626373e-21,-8.756243768681319e-21,-8.751248763736263e-21,-8.746253758791208e-21,-8.741258753846154e-21,-8.736263748901098e-21,-8.731268743956044e-21,-8.726273739010988e-21,-8.721278734065934e-21,-8.716283729120879e-21,-8.711288724175823e-21,-8.706293719230769e-21,-8.701298714285713e-21,-8.696303709340659e-21,-8.691308704395604e-21,-8.68631369945055e-21,-8.681318694505494e-21,-8.67632368956044e-21,-8.671328684615384e-21,-8.666333679670329e-21,-8.661338674725274e-21,-8.656343669780219e-21,-8.651348664835165e-21,-8.646353659890109e-21,-8.641358654945055e-21,-8.63636365e-21,-8.631368645054944e-21,-8.62637364010989e-21,-8.621378635164834e-21,-8.61638363021978e-21,-8.611388625274725e-21,-8.60639362032967e-21,-8.601398615384615e-21,-8.59640361043956e-21,-8.591408605494505e-21,-8.58641360054945e-21,-8.581418595604395e-21,-8.57642359065934e-21,-8.571428585714286e-21,-8.56643358076923e-21,-8.561438575824176e-21,-8.55644357087912e-21,-8.551448565934065e-21,-8.54645356098901e-21,-8.541458556043955e-21,-8.536463551098901e-21,-8.531468546153845e-21,-8.526473541208791e-21,-8.521478536263736e-21,-8.51648353131868e-21,-8.511488526373626e-21,-8.50649352142857e-21,-8.501498516483516e-21,-8.49650351153846e-21,-8.491508506593407e-21,-8.486513501648351e-21,-8.481518496703297e-21,-8.476523491758241e-21,-8.471528486813186e-21,-8.466533481868132e-21,-8.461538476923076e-21,-8.456543471978022e-21,-8.451548467032966e-21,-8.446553462087912e-21,-8.441558457142857e-21,-8.436563452197801e-21,-8.431568447252747e-21,-8.426573442307691e-21,-8.421578437362637e-21,-8.416583432417582e-21,-8.411588427472528e-21,-8.406593422527472e-21,-8.401598417582418e-21,-8.396603412637362e-21,-8.391608407692307e-21,-8.386613402747253e-21,-8.381618397802197e-21,-8.376623392857143e-21,-8.371628387912087e-21,-8.366633382967033e-21,-8.361638378021978e-21,-8.356643373076922e-21,-8.351648368131868e-21,-8.346653363186812e-21,-8.341658358241758e-21,-8.336663353296703e-21,-8.331668348351648e-21,-8.326673343406593e-21,-8.321678338461537e-21,-8.316683333516483e-21,-8.311688328571428e-21,-8.306693323626373e-21,-8.301698318681318e-21,-8.296703313736264e-21,-8.291708308791208e-21,-8.286713303846154e-21,-8.281718298901098e-21,-8.276723293956043e-21,-8.271728289010989e-21,-8.266733284065933e-21,-8.261738279120879e-21,-8.256743274175823e-21,-8.25174826923077e-21,-8.246753264285714e-21,-8.241758259340658e-21,-8.236763254395604e-21,-8.231768249450549e-21,-8.226773244505494e-21,-8.221778239560439e-21,-8.216783234615385e-21,-8.211788229670329e-21,-8.206793224725275e-21,-8.20179821978022e-21,-8.196803214835164e-21,-8.19180820989011e-21,-8.186813204945054e-21,-8.1818182e-21,-8.176823195054944e-21,-8.17182819010989e-21,-8.166833185164835e-21,-8.161838180219779e-21,-8.156843175274725e-21,-8.15184817032967e-21,-8.146853165384615e-21,-8.14185816043956e-21,-8.136863155494506e-21,-8.13186815054945e-21,-8.126873145604394e-21,-8.12187814065934e-21,-8.116883135714285e-21,-8.11188813076923e-21,-8.106893125824175e-21,-8.101898120879121e-21,-8.096903115934065e-21,-8.091908110989011e-21,-8.086913106043956e-21,-8.0819181010989e-21,-8.076923096153846e-21,-8.07192809120879e-21,-8.066933086263736e-21,-8.06193808131868e-21,-8.056943076373627e-21,-8.051948071428571e-21,-8.046953066483515e-21,-8.041958061538461e-21,-8.036963056593406e-21,-8.031968051648352e-21,-8.026973046703296e-21,-8.021978041758242e-21,-8.016983036813186e-21,-8.011988031868132e-21,-8.006993026923077e-21,-8.001998021978021e-21,-7.997003017032967e-21,-7.992008012087911e-21,-7.987013007142857e-21,-7.982018002197802e-21,-7.977022997252747e-21,-7.972027992307692e-21,-7.967032987362636e-21,-7.962037982417582e-21,-7.957042977472527e-21,-7.952047972527472e-21,-7.947052967582417e-21,-7.942057962637363e-21,-7.937062957692307e-21,-7.932067952747252e-21,-7.927072947802197e-21,-7.922077942857142e-21,-7.917082937912088e-21,-7.912087932967032e-21,-7.907092928021978e-21,-7.902097923076922e-21,-7.897102918131868e-21,-7.892107913186813e-21,-7.887112908241757e-21,-7.882117903296703e-21,-7.877122898351647e-21,-7.872127893406593e-21,-7.867132888461538e-21,-7.862137883516484e-21,-7.857142878571428e-21,-7.852147873626373e-21,-7.847152868681318e-21,-7.842157863736263e-21,-7.837162858791209e-21,-7.832167853846153e-21,-7.827172848901099e-21,-7.822177843956043e-21,-7.81718283901099e-21,-7.812187834065934e-21,-7.807192829120878e-21,-7.802197824175824e-21,-7.797202819230768e-21,-7.792207814285714e-21,-7.787212809340659e-21,-7.782217804395605e-21,-7.777222799450549e-21,-7.772227794505493e-21,-7.76723278956044e-21,-7.762237784615384e-21,-7.75724277967033e-21,-7.752247774725274e-21,-7.74725276978022e-21,-7.742257764835164e-21,-7.737262759890109e-21,-7.732267754945055e-21,-7.727272749999999e-21,-7.722277745054945e-21,-7.71728274010989e-21,-7.712287735164835e-21,-7.70729273021978e-21,-7.702297725274726e-21,-7.69730272032967e-21,-7.692307715384614e-21,-7.68731271043956e-21,-7.682317705494505e-21,-7.67732270054945e-21,-7.672327695604395e-21,-7.667332690659341e-21,-7.662337685714285e-21,-7.65734268076923e-21,-7.652347675824176e-21,-7.64735267087912e-21,-7.642357665934066e-21,-7.63736266098901e-21,-7.632367656043956e-21,-7.6273726510989e-21,-7.622377646153846e-21,-7.617382641208791e-21,-7.612387636263735e-21,-7.607392631318681e-21,-7.602397626373626e-21,-7.597402621428571e-21,-7.592407616483516e-21,-7.587412611538462e-21,-7.582417606593406e-21,-7.57742260164835e-21,-7.572427596703296e-21,-7.567432591758241e-21,-7.562437586813187e-21,-7.557442581868131e-21,-7.552447576923077e-21,-7.547452571978021e-21,-7.542457567032966e-21,-7.537462562087912e-21,-7.532467557142856e-21,-7.527472552197802e-21,-7.522477547252746e-21,-7.517482542307692e-21,-7.512487537362637e-21,-7.507492532417583e-21,-7.502497527472527e-21,-7.497502522527471e-21,-7.492507517582417e-21,-7.487512512637362e-21,-7.482517507692308e-21,-7.477522502747252e-21,-7.472527497802198e-21,-7.467532492857142e-21,-7.462537487912087e-21,-7.457542482967033e-21,-7.452547478021977e-21,-7.447552473076923e-21,-7.442557468131867e-21,-7.437562463186813e-21,-7.432567458241758e-21,-7.427572453296704e-21,-7.422577448351648e-21,-7.417582443406592e-21,-7.412587438461538e-21,-7.407592433516483e-21,-7.402597428571429e-21,-7.397602423626373e-21,-7.392607418681319e-21,-7.387612413736263e-21,-7.382617408791208e-21,-7.377622403846154e-21,-7.372627398901098e-21,-7.367632393956044e-21,-7.362637389010988e-21,-7.357642384065934e-21,-7.352647379120879e-21,-7.347652374175823e-21,-7.342657369230769e-21,-7.337662364285713e-21,-7.332667359340659e-21,-7.327672354395604e-21,-7.32267734945055e-21,-7.317682344505494e-21,-7.31268733956044e-21,-7.307692334615384e-21,-7.302697329670329e-21,-7.297702324725275e-21,-7.292707319780219e-21,-7.287712314835165e-21,-7.282717309890109e-21,-7.277722304945055e-21,-7.2727273e-21,-7.267732295054944e-21,-7.26273729010989e-21,-7.257742285164834e-21,-7.25274728021978e-21,-7.247752275274725e-21,-7.24275727032967e-21,-7.237762265384615e-21,-7.232767260439561e-21,-7.227772255494505e-21,-7.22277725054945e-21,-7.217782245604395e-21,-7.21278724065934e-21,-7.207792235714286e-21,-7.20279723076923e-21,-7.197802225824176e-21,-7.19280722087912e-21,-7.187812215934065e-21,-7.182817210989011e-21,-7.177822206043955e-21,-7.172827201098901e-21,-7.167832196153845e-21,-7.162837191208791e-21,-7.157842186263736e-21,-7.15284718131868e-21,-7.147852176373626e-21,-7.14285717142857e-21,-7.137862166483516e-21,-7.132867161538461e-21,-7.127872156593407e-21,-7.122877151648351e-21,-7.117882146703297e-21,-7.112887141758241e-21,-7.107892136813186e-21,-7.102897131868132e-21,-7.097902126923076e-21,-7.092907121978022e-21,-7.087912117032966e-21,-7.082917112087912e-21,-7.077922107142857e-21,-7.072927102197801e-21,-7.067932097252747e-21,-7.062937092307691e-21,-7.057942087362637e-21,-7.052947082417582e-21,-7.047952077472528e-21,-7.042957072527472e-21,-7.037962067582418e-21,-7.032967062637362e-21,-7.027972057692307e-21,-7.022977052747253e-21,-7.017982047802197e-21,-7.012987042857143e-21,-7.007992037912087e-21,-7.002997032967033e-21,-6.998002028021978e-21,-6.993007023076922e-21,-6.988012018131868e-21,-6.983017013186812e-21,-6.978022008241758e-21,-6.973027003296703e-21,-6.968031998351649e-21,-6.963036993406593e-21,-6.958041988461537e-21,-6.953046983516483e-21,-6.948051978571428e-21,-6.943056973626374e-21,-6.938061968681318e-21,-6.933066963736264e-21,-6.928071958791208e-21,-6.923076953846154e-21,-6.918081948901099e-21,-6.913086943956043e-21,-6.908091939010989e-21,-6.903096934065933e-21,-6.898101929120879e-21,-6.893106924175824e-21,-6.88811191923077e-21,-6.883116914285714e-21,-6.878121909340658e-21,-6.873126904395604e-21,-6.868131899450549e-21,-6.863136894505494e-21,-6.858141889560439e-21,-6.853146884615385e-21,-6.848151879670329e-21,-6.843156874725275e-21,-6.83816186978022e-21,-6.833166864835164e-21,-6.82817185989011e-21,-6.823176854945054e-21,-6.81818185e-21,-6.813186845054944e-21,-6.80819184010989e-21,-6.803196835164835e-21,-6.798201830219779e-21,-6.793206825274725e-21,-6.78821182032967e-21,-6.783216815384615e-21,-6.77822181043956e-21,-6.773226805494505e-21,-6.76823180054945e-21,-6.763236795604395e-21,-6.7582417906593404e-21,-6.7532467857142855e-21,-6.748251780769231e-21,-6.743256775824175e-21,-6.73826177087912e-21,-6.7332667659340654e-21,-6.7282717609890105e-21,-6.723276756043956e-21,-6.718281751098901e-21,-6.713286746153846e-21,-6.708291741208791e-21,-6.7032967362637355e-21,-6.698301731318681e-21,-6.693306726373626e-21,-6.688311721428571e-21,-6.683316716483516e-21,-6.678321711538461e-21,-6.6733267065934065e-21,-6.6683317016483516e-21,-6.663336696703296e-21,-6.658341691758241e-21,-6.653346686813186e-21,-6.6483516818681315e-21,-6.6433566769230766e-21,-6.638361671978022e-21,-6.633366667032967e-21,-6.628371662087912e-21,-6.6233766571428565e-21,-6.6183816521978016e-21,-6.613386647252747e-21,-6.608391642307692e-21,-6.603396637362637e-21,-6.598401632417582e-21,-6.593406627472527e-21,-6.5884116225274725e-21,-6.583416617582417e-21,-6.578421612637362e-21,-6.573426607692307e-21,-6.5684316027472524e-21,-6.5634365978021975e-21,-6.558441592857143e-21,-6.553446587912088e-21,-6.548451582967032e-21,-6.5434565780219774e-21,-6.5384615730769225e-21,-6.533466568131868e-21,-6.528471563186813e-21,-6.523476558241758e-21,-6.518481553296703e-21,-6.513486548351648e-21,-6.508491543406593e-21,-6.503496538461538e-21,-6.498501533516483e-21,-6.493506528571428e-21,-6.488511523626373e-21,-6.4835165186813185e-21,-6.4785215137362636e-21,-6.473526508791209e-21,-6.468531503846153e-21,-6.463536498901098e-21,-6.4585414939560435e-21,-6.4535464890109886e-21,-6.448551484065934e-21,-6.443556479120879e-21,-6.438561474175824e-21,-6.433566469230769e-21,-6.4285714642857136e-21,-6.423576459340659e-21,-6.418581454395604e-21,-6.413586449450549e-21,-6.408591444505494e-21,-6.403596439560439e-21,-6.3986014346153845e-21,-6.39360642967033e-21,-6.388611424725274e-21,-6.383616419780219e-21,-6.3786214148351644e-21,-6.3736264098901095e-21,-6.368631404945055e-21,-6.3636364e-21,-6.358641395054945e-21,-6.3536463901098894e-21,-6.3486513851648345e-21,-6.34365638021978e-21,-6.338661375274725e-21,-6.33366637032967e-21,-6.328671365384615e-21,-6.32367636043956e-21,-6.3186813554945054e-21,-6.31368635054945e-21,-6.308691345604395e-21,-6.30369634065934e-21,-6.298701335714285e-21,-6.2937063307692305e-21,-6.2887113258241756e-21,-6.283716320879121e-21,-6.278721315934066e-21,-6.27372631098901e-21,-6.2687313060439555e-21,-6.2637363010989006e-21,-6.258741296153846e-21,-6.253746291208791e-21,-6.248751286263736e-21,-6.243756281318681e-21,-6.238761276373626e-21,-6.233766271428571e-21,-6.228771266483516e-21,-6.223776261538461e-21,-6.218781256593406e-21,-6.213786251648351e-21,-6.2087912467032965e-21,-6.203796241758242e-21,-6.198801236813187e-21,-6.193806231868131e-21,-6.1888112269230764e-21,-6.1838162219780215e-21,-6.178821217032967e-21,-6.173826212087912e-21,-6.168831207142857e-21,-6.163836202197802e-21,-6.158841197252747e-21,-6.153846192307692e-21,-6.148851187362637e-21,-6.143856182417582e-21,-6.138861177472527e-21,-6.133866172527472e-21,-6.1288711675824174e-21,-6.1238761626373626e-21,-6.118881157692307e-21,-6.113886152747252e-21,-6.108891147802197e-21,-6.1038961428571425e-21,-6.0989011379120876e-21,-6.093906132967033e-21,-6.088911128021978e-21,-6.083916123076923e-21,-6.0789211181318675e-21,-6.0739261131868126e-21,-6.068931108241758e-21,-6.063936103296703e-21,-6.058941098351648e-21,-6.053946093406593e-21,-6.048951088461538e-21,-6.0439560835164835e-21,-6.038961078571428e-21,-6.033966073626373e-21,-6.028971068681318e-21,-6.023976063736263e-21,-6.0189810587912085e-21,-6.013986053846154e-21,-6.008991048901099e-21,-6.003996043956044e-21,-5.9990010390109884e-21,-5.9940060340659335e-21,-5.989011029120879e-21,-5.984016024175824e-21,-5.979021019230769e-21,-5.974026014285714e-21,-5.969031009340659e-21,-5.9640360043956044e-21,-5.959040999450549e-21,-5.954045994505494e-21,-5.949050989560439e-21,-5.944055984615384e-21,-5.9390609796703294e-21,-5.9340659747252746e-21,-5.92907096978022e-21,-5.924075964835164e-21,-5.919080959890109e-21,-5.9140859549450544e-21,-5.9090909499999996e-21,-5.904095945054945e-21,-5.89910094010989e-21,-5.894105935164835e-21,-5.88911093021978e-21,-5.8841159252747246e-21,-5.87912092032967e-21,-5.874125915384615e-21,-5.86913091043956e-21,-5.864135905494505e-21,-5.85914090054945e-21,-5.8541458956043955e-21,-5.849150890659341e-21,-5.844155885714285e-21,-5.83916088076923e-21,-5.834165875824175e-21,-5.8291708708791205e-21,-5.824175865934066e-21,-5.819180860989011e-21,-5.814185856043956e-21,-5.809190851098901e-21,-5.8041958461538455e-21,-5.799200841208791e-21,-5.794205836263736e-21,-5.789210831318681e-21,-5.784215826373626e-21,-5.779220821428571e-21,-5.7742258164835164e-21,-5.7692308115384616e-21,-5.764235806593406e-21,-5.759240801648351e-21,-5.754245796703296e-21,-5.7492507917582414e-21,-5.7442557868131866e-21,-5.739260781868132e-21,-5.734265776923077e-21,-5.729270771978021e-21,-5.7242757670329664e-21,-5.7192807620879116e-21,-5.714285757142857e-21,-5.709290752197802e-21,-5.704295747252747e-21,-5.699300742307692e-21,-5.694305737362637e-21,-5.689310732417582e-21,-5.684315727472527e-21,-5.679320722527472e-21,-5.674325717582417e-21,-5.669330712637362e-21,-5.6643357076923075e-21,-5.659340702747253e-21,-5.654345697802198e-21,-5.649350692857142e-21,-5.644355687912087e-21,-5.6393606829670325e-21,-5.634365678021978e-21,-5.629370673076923e-21,-5.624375668131868e-21,-5.619380663186813e-21,-5.614385658241758e-21,-5.609390653296703e-21,-5.604395648351648e-21,-5.599400643406593e-21,-5.594405638461538e-21,-5.589410633516483e-21,-5.5844156285714284e-21,-5.5794206236263736e-21,-5.574425618681319e-21,-5.569430613736263e-21,-5.564435608791208e-21,-5.5594406038461534e-21,-5.5544455989010986e-21,-5.549450593956044e-21,-5.544455589010989e-21,-5.539460584065934e-21,-5.5344655791208784e-21,-5.5294705741758236e-21,-5.524475569230769e-21,-5.519480564285714e-21,-5.514485559340659e-21,-5.509490554395604e-21,-5.504495549450549e-21,-5.4995005445054945e-21,-5.494505539560439e-21,-5.489510534615384e-21,-5.484515529670329e-21,-5.479520524725274e-21,-5.4745255197802195e-21,-5.469530514835165e-21,-5.46453550989011e-21,-5.459540504945055e-21,-5.454545499999999e-21,-5.4495504950549445e-21,-5.44455549010989e-21,-5.439560485164835e-21,-5.43456548021978e-21,-5.429570475274725e-21,-5.42457547032967e-21,-5.4195804653846154e-21,-5.41458546043956e-21,-5.409590455494505e-21,-5.40459545054945e-21,-5.399600445604395e-21,-5.3946054406593404e-21,-5.3896104357142856e-21,-5.384615430769231e-21,-5.379620425824176e-21,-5.37462542087912e-21,-5.3696304159340654e-21,-5.3646354109890106e-21,-5.359640406043956e-21,-5.354645401098901e-21,-5.349650396153846e-21,-5.344655391208791e-21,-5.3396603862637356e-21,-5.334665381318681e-21,-5.329670376373626e-21,-5.324675371428571e-21,-5.319680366483516e-21,-5.314685361538461e-21,-5.3096903565934065e-21,-5.304695351648352e-21,-5.299700346703296e-21,-5.294705341758241e-21,-5.289710336813186e-21,-5.2847153318681315e-21,-5.279720326923077e-21,-5.274725321978022e-21,-5.269730317032967e-21,-5.264735312087912e-21,-5.2597403071428565e-21,-5.254745302197802e-21,-5.249750297252747e-21,-5.244755292307692e-21,-5.239760287362637e-21,-5.234765282417582e-21,-5.2297702774725274e-21,-5.2247752725274726e-21,-5.219780267582417e-21,-5.214785262637362e-21,-5.209790257692307e-21,-5.2047952527472524e-21,-5.1998002478021976e-21,-5.194805242857143e-21,-5.189810237912088e-21,-5.184815232967033e-21,-5.1798202280219774e-21,-5.1748252230769226e-21,-5.169830218131868e-21,-5.164835213186813e-21,-5.159840208241758e-21,-5.154845203296703e-21,-5.149850198351648e-21,-5.1448551934065935e-21,-5.139860188461538e-21,-5.134865183516483e-21,-5.129870178571428e-21,-5.124875173626373e-21,-5.1198801686813185e-21,-5.114885163736264e-21,-5.109890158791209e-21,-5.104895153846153e-21,-5.099900148901098e-21,-5.0949051439560435e-21,-5.089910139010989e-21,-5.084915134065934e-21,-5.079920129120879e-21,-5.074925124175824e-21,-5.069930119230769e-21,-5.064935114285714e-21,-5.059940109340659e-21,-5.054945104395604e-21,-5.049950099450549e-21,-5.044955094505494e-21,-5.0399600895604394e-21,-5.0349650846153846e-21,-5.02997007967033e-21,-5.024975074725274e-21,-5.019980069780219e-21,-5.0149850648351644e-21,-5.0099900598901096e-21,-5.004995054945055e-21,-5.00000005e-21,-4.995005045054945e-21,-4.99001004010989e-21,-4.9850150351648346e-21,-4.98002003021978e-21,-4.975025025274725e-21,-4.97003002032967e-21,-4.965035015384615e-21,-4.96004001043956e-21,-4.9550450054945055e-21,-4.950050000549451e-21,-4.945054995604395e-21,-4.94005999065934e-21,-4.935064985714285e-21,-4.9300699807692305e-21,-4.925074975824176e-21,-4.920079970879121e-21,-4.915084965934066e-21,-4.91008996098901e-21,-4.9050949560439555e-21,-4.900099951098901e-21,-4.895104946153846e-21,-4.890109941208791e-21,-4.885114936263736e-21,-4.880119931318681e-21,-4.8751249263736264e-21,-4.870129921428571e-21,-4.865134916483516e-21,-4.860139911538461e-21,-4.855144906593406e-21,-4.8501499016483514e-21,-4.8451548967032966e-21,-4.840159891758242e-21,-4.835164886813187e-21,-4.830169881868131e-21,-4.8251748769230764e-21,-4.8201798719780216e-21,-4.815184867032967e-21,-4.810189862087912e-21,-4.805194857142857e-21,-4.800199852197802e-21,-4.795204847252747e-21,-4.790209842307692e-21,-4.785214837362637e-21,-4.780219832417582e-21,-4.775224827472527e-21,-4.770229822527472e-21,-4.7652348175824175e-21,-4.760239812637363e-21,-4.755244807692308e-21,-4.750249802747252e-21,-4.745254797802197e-21,-4.7402597928571425e-21,-4.735264787912088e-21,-4.730269782967033e-21,-4.725274778021978e-21,-4.720279773076923e-21,-4.7152847681318675e-21,-4.710289763186813e-21,-4.705294758241758e-21,-4.700299753296703e-21,-4.695304748351648e-21,-4.690309743406593e-21,-4.6853147384615384e-21,-4.6803197335164836e-21,-4.675324728571428e-21,-4.670329723626373e-21,-4.665334718681318e-21,-4.6603397137362634e-21,-4.6553447087912086e-21,-4.650349703846154e-21,-4.645354698901099e-21,-4.640359693956044e-21,-4.6353646890109884e-21,-4.6303696840659336e-21,-4.625374679120879e-21,-4.620379674175824e-21,-4.615384669230769e-21,-4.610389664285714e-21,-4.605394659340659e-21,-4.6003996543956045e-21,-4.595404649450549e-21,-4.590409644505494e-21,-4.585414639560439e-21,-4.580419634615384e-21,-4.5754246296703295e-21,-4.570429624725275e-21,-4.56543461978022e-21,-4.560439614835165e-21,-4.555444609890109e-21,-4.5504496049450545e-21,-4.5454546e-21,-4.540459595054945e-21,-4.53546459010989e-21,-4.530469585164835e-21,-4.52547458021978e-21,-4.520479575274725e-21,-4.51548457032967e-21,-4.510489565384615e-21,-4.50549456043956e-21,-4.500499555494505e-21,-4.4955045505494504e-21,-4.4905095456043956e-21,-4.485514540659341e-21,-4.480519535714285e-21,-4.47552453076923e-21,-4.4705295258241754e-21,-4.4655345208791206e-21,-4.460539515934066e-21,-4.455544510989011e-21,-4.450549506043956e-21,-4.445554501098901e-21,-4.4405594961538456e-21,-4.435564491208791e-21,-4.430569486263736e-21,-4.425574481318681e-21,-4.420579476373626e-21,-4.415584471428571e-21,-4.4105894664835165e-21,-4.405594461538462e-21,-4.400599456593406e-21,-4.395604451648351e-21,-4.390609446703296e-21,-4.3856144417582415e-21,-4.380619436813187e-21,-4.375624431868132e-21,-4.370629426923077e-21,-4.365634421978022e-21,-4.3606394170329665e-21,-4.355644412087912e-21,-4.350649407142857e-21,-4.345654402197802e-21,-4.340659397252747e-21,-4.335664392307692e-21,-4.3306693873626374e-21,-4.325674382417582e-21,-4.320679377472527e-21,-4.315684372527472e-21,-4.310689367582417e-21,-4.3056943626373624e-21,-4.3006993576923076e-21,-4.295704352747253e-21,-4.290709347802198e-21,-4.285714342857142e-21,-4.2807193379120874e-21,-4.2757243329670326e-21,-4.270729328021978e-21,-4.265734323076923e-21,-4.260739318131868e-21,-4.255744313186813e-21,-4.250749308241758e-21,-4.245754303296703e-21,-4.240759298351648e-21,-4.235764293406593e-21,-4.230769288461538e-21,-4.225774283516483e-21,-4.2207792785714285e-21,-4.215784273626374e-21,-4.210789268681319e-21,-4.205794263736263e-21,-4.200799258791208e-21,-4.1958042538461535e-21,-4.190809248901099e-21,-4.185814243956044e-21,-4.180819239010989e-21,-4.175824234065934e-21,-4.170829229120879e-21,-4.165834224175824e-21,-4.160839219230769e-21,-4.155844214285714e-21,-4.150849209340659e-21,-4.145854204395604e-21,-4.1408591994505494e-21,-4.1358641945054946e-21,-4.13086918956044e-21,-4.125874184615384e-21,-4.120879179670329e-21,-4.1158841747252744e-21,-4.1108891697802196e-21,-4.105894164835165e-21,-4.10089915989011e-21,-4.095904154945055e-21,-4.0909091499999994e-21,-4.0859141450549446e-21,-4.08091914010989e-21,-4.075924135164835e-21,-4.07092913021978e-21,-4.065934125274725e-21,-4.06093912032967e-21,-4.0559441153846155e-21,-4.05094911043956e-21,-4.045954105494505e-21,-4.04095910054945e-21,-4.035964095604395e-21,-4.0309690906593405e-21,-4.025974085714286e-21,-4.020979080769231e-21,-4.015984075824176e-21,-4.01098907087912e-21,-4.0059940659340655e-21,-4.000999060989011e-21,-3.996004056043956e-21,-3.991009051098901e-21,-3.986014046153846e-21,-3.981019041208791e-21,-3.9760240362637364e-21,-3.971029031318681e-21,-3.966034026373626e-21,-3.961039021428571e-21,-3.956044016483516e-21,-3.9510490115384614e-21,-3.9460540065934066e-21,-3.941059001648352e-21,-3.936063996703297e-21,-3.931068991758241e-21,-3.9260739868131864e-21,-3.9210789818681316e-21,-3.916083976923077e-21,-3.911088971978022e-21,-3.906093967032967e-21,-3.901098962087912e-21,-3.8961039571428566e-21,-3.891108952197802e-21,-3.886113947252747e-21,-3.881118942307692e-21,-3.876123937362637e-21,-3.871128932417582e-21,-3.8661339274725275e-21,-3.861138922527473e-21,-3.856143917582417e-21,-3.851148912637362e-21,-3.846153907692307e-21,-3.8411589027472525e-21,-3.836163897802198e-21,-3.831168892857143e-21,-3.826173887912088e-21,-3.821178882967033e-21,-3.8161838780219775e-21,-3.811188873076923e-21,-3.806193868131868e-21,-3.801198863186813e-21,-3.796203858241758e-21,-3.791208853296703e-21,-3.7862138483516484e-21,-3.7812188434065935e-21,-3.776223838461538e-21,-3.771228833516483e-21,-3.766233828571428e-21,-3.7612388236263734e-21,-3.7562438186813186e-21,-3.751248813736264e-21,-3.746253808791209e-21,-3.741258803846154e-21,-3.7362637989010984e-21,-3.7312687939560436e-21,-3.726273789010989e-21,-3.721278784065934e-21,-3.716283779120879e-21,-3.711288774175824e-21,-3.706293769230769e-21,-3.701298764285714e-21,-3.696303759340659e-21,-3.691308754395604e-21,-3.686313749450549e-21,-3.681318744505494e-21,-3.6763237395604395e-21,-3.671328734615385e-21,-3.66633372967033e-21,-3.661338724725274e-21,-3.656343719780219e-21,-3.6513487148351645e-21,-3.64635370989011e-21,-3.641358704945055e-21,-3.6363637e-21,-3.631368695054945e-21,-3.62637369010989e-21,-3.621378685164835e-21,-3.61638368021978e-21,-3.611388675274725e-21,-3.60639367032967e-21,-3.601398665384615e-21,-3.5964036604395604e-21,-3.5914086554945055e-21,-3.586413650549451e-21,-3.581418645604395e-21,-3.57642364065934e-21,-3.5714286357142854e-21,-3.5664336307692306e-21,-3.561438625824176e-21,-3.556443620879121e-21,-3.551448615934066e-21,-3.546453610989011e-21,-3.5414586060439556e-21,-3.536463601098901e-21,-3.531468596153846e-21,-3.526473591208791e-21,-3.521478586263736e-21,-3.516483581318681e-21,-3.5114885763736265e-21,-3.506493571428571e-21,-3.501498566483516e-21,-3.496503561538461e-21,-3.491508556593406e-21,-3.4865135516483515e-21,-3.4815185467032966e-21,-3.476523541758242e-21,-3.471528536813187e-21,-3.466533531868131e-21,-3.4615385269230765e-21,-3.456543521978022e-21,-3.451548517032967e-21,-3.446553512087912e-21,-3.441558507142857e-21,-3.436563502197802e-21,-3.4315684972527474e-21,-3.426573492307692e-21,-3.421578487362637e-21,-3.416583482417582e-21,-3.411588477472527e-21,-3.4065934725274724e-21,-3.4015984675824175e-21,-3.396603462637363e-21,-3.391608457692308e-21,-3.3866134527472526e-21,-3.3816184478021978e-21,-3.3766234428571425e-21,-3.3716284379120877e-21,-3.366633432967033e-21,-3.361638428021978e-21,-3.3566434230769228e-21,-3.351648418131868e-21,-3.346653413186813e-21,-3.3416584082417582e-21,-3.336663403296703e-21,-3.331668398351648e-21,-3.3266733934065933e-21,-3.3216783884615385e-21,-3.3166833835164832e-21,-3.3116883785714284e-21,-3.3066933736263735e-21,-3.3016983686813183e-21,-3.2967033637362635e-21,-3.2917083587912086e-21,-3.2867133538461538e-21,-3.2817183489010985e-21,-3.2767233439560437e-21,-3.271728339010989e-21,-3.266733334065934e-21,-3.2617383291208788e-21,-3.256743324175824e-21,-3.251748319230769e-21,-3.2467533142857142e-21,-3.241758309340659e-21,-3.236763304395604e-21,-3.2317682994505493e-21,-3.2267732945054945e-21,-3.2217782895604392e-21,-3.2167832846153844e-21,-3.2117882796703295e-21,-3.2067932747252747e-21,-3.2017982697802195e-21,-3.1968032648351646e-21,-3.1918082598901098e-21,-3.186813254945055e-21,-3.1818182499999997e-21,-3.176823245054945e-21,-3.17182824010989e-21,-3.166833235164835e-21,-3.16183823021978e-21,-3.156843225274725e-21,-3.1518482203296702e-21,-3.1468532153846154e-21,-3.14185821043956e-21,-3.1368632054945053e-21,-3.1318682005494505e-21,-3.1268731956043956e-21,-3.1218781906593404e-21,-3.1168831857142855e-21,-3.1118881807692307e-21,-3.1068931758241755e-21,-3.1018981708791206e-21,-3.0969031659340658e-21,-3.091908160989011e-21,-3.0869131560439557e-21,-3.081918151098901e-21,-3.076923146153846e-21,-3.071928141208791e-21,-3.066933136263736e-21,-3.061938131318681e-21,-3.0569431263736262e-21,-3.0519481214285714e-21,-3.046953116483516e-21,-3.0419581115384613e-21,-3.0369631065934065e-21,-3.0319681016483516e-21,-3.0269730967032964e-21,-3.0219780917582415e-21,-3.0169830868131867e-21,-3.011988081868132e-21,-3.0069930769230766e-21,-3.0019980719780218e-21,-2.997003067032967e-21,-2.992008062087912e-21,-2.987013057142857e-21,-2.982018052197802e-21,-2.977023047252747e-21,-2.9720280423076923e-21,-2.967033037362637e-21,-2.9620380324175822e-21,-2.9570430274725274e-21,-2.9520480225274725e-21,-2.9470530175824173e-21,-2.9420580126373625e-21,-2.9370630076923076e-21,-2.9320680027472528e-21,-2.9270729978021975e-21,-2.9220779928571427e-21,-2.917082987912088e-21,-2.912087982967033e-21,-2.9070929780219778e-21,-2.902097973076923e-21,-2.897102968131868e-21,-2.892107963186813e-21,-2.887112958241758e-21,-2.882117953296703e-21,-2.8771229483516483e-21,-2.872127943406593e-21,-2.8671329384615382e-21,-2.8621379335164834e-21,-2.8571429285714285e-21,-2.8521479236263733e-21,-2.8471529186813185e-21,-2.8421579137362636e-21,-2.8371629087912088e-21,-2.8321679038461535e-21,-2.8271728989010987e-21,-2.822177893956044e-21,-2.817182889010989e-21,-2.8121878840659338e-21,-2.807192879120879e-21,-2.802197874175824e-21,-2.7972028692307692e-21,-2.792207864285714e-21,-2.787212859340659e-21,-2.7822178543956043e-21,-2.7772228494505495e-21,-2.7722278445054942e-21,-2.7672328395604394e-21,-2.7622378346153845e-21,-2.7572428296703297e-21,-2.7522478247252745e-21,-2.7472528197802196e-21,-2.7422578148351648e-21,-2.73726280989011e-21,-2.7322678049450547e-21,-2.7272728e-21,-2.722277795054945e-21,-2.71728279010989e-21,-2.712287785164835e-21,-2.70729278021978e-21,-2.7022977752747252e-21,-2.69730277032967e-21,-2.692307765384615e-21,-2.6873127604395603e-21,-2.6823177554945055e-21,-2.6773227505494502e-21,-2.6723277456043954e-21,-2.6673327406593405e-21,-2.6623377357142857e-21,-2.6573427307692305e-21,-2.6523477258241756e-21,-2.6473527208791208e-21,-2.642357715934066e-21,-2.6373627109890107e-21,-2.632367706043956e-21,-2.627372701098901e-21,-2.622377696153846e-21,-2.617382691208791e-21,-2.612387686263736e-21,-2.6073926813186812e-21,-2.6023976763736264e-21,-2.597402671428571e-21,-2.5924076664835163e-21,-2.5874126615384615e-21,-2.5824176565934066e-21,-2.5774226516483514e-21,-2.5724276467032965e-21,-2.5674326417582417e-21,-2.562437636813187e-21,-2.5574426318681316e-21,-2.5524476269230768e-21,-2.547452621978022e-21,-2.542457617032967e-21,-2.537462612087912e-21,-2.532467607142857e-21,-2.527472602197802e-21,-2.5224775972527473e-21,-2.517482592307692e-21,-2.5124875873626372e-21,-2.5074925824175824e-21,-2.502497577472527e-21,-2.4975025725274723e-21,-2.4925075675824175e-21,-2.4875125626373626e-21,-2.4825175576923074e-21,-2.4775225527472525e-21,-2.4725275478021977e-21,-2.467532542857143e-21,-2.4625375379120876e-21,-2.4575425329670328e-21,-2.452547528021978e-21,-2.447552523076923e-21,-2.442557518131868e-21,-2.437562513186813e-21,-2.432567508241758e-21,-2.4275725032967033e-21,-2.422577498351648e-21,-2.4175824934065932e-21,-2.4125874884615384e-21,-2.4075924835164835e-21,-2.4025974785714283e-21,-2.3976024736263735e-21,-2.3926074686813186e-21,-2.3876124637362638e-21,-2.3826174587912085e-21,-2.3776224538461537e-21,-2.372627448901099e-21,-2.367632443956044e-21,-2.3626374390109888e-21,-2.357642434065934e-21,-2.352647429120879e-21,-2.3476524241758242e-21,-2.342657419230769e-21,-2.337662414285714e-21,-2.3326674093406593e-21,-2.3276724043956044e-21,-2.3226773994505492e-21,-2.3176823945054944e-21,-2.3126873895604395e-21,-2.3076923846153847e-21,-2.3026973796703295e-21,-2.2977023747252746e-21,-2.2927073697802198e-21,-2.2877123648351645e-21,-2.2827173598901097e-21,-2.277722354945055e-21,-2.27272735e-21,-2.2677323450549448e-21,-2.26273734010989e-21,-2.257742335164835e-21,-2.2527473302197802e-21,-2.247752325274725e-21,-2.24275732032967e-21,-2.2377623153846153e-21,-2.2327673104395604e-21,-2.2277723054945052e-21,-2.2227773005494504e-21,-2.2177822956043955e-21,-2.2127872906593407e-21,-2.2077922857142854e-21,-2.2027972807692306e-21,-2.1978022758241758e-21,-2.192807270879121e-21,-2.1878122659340657e-21,-2.182817260989011e-21,-2.177822256043956e-21,-2.172827251098901e-21,-2.167832246153846e-21,-2.162837241208791e-21,-2.1578422362637362e-21,-2.1528472313186814e-21,-2.147852226373626e-21,-2.1428572214285713e-21,-2.1378622164835164e-21,-2.1328672115384616e-21,-2.1278722065934064e-21,-2.1228772016483515e-21,-2.1178821967032967e-21,-2.112887191758242e-21,-2.1078921868131866e-21,-2.1028971818681318e-21,-2.097902176923077e-21,-2.0929071719780217e-21,-2.087912167032967e-21,-2.082917162087912e-21,-2.077922157142857e-21,-2.072927152197802e-21,-2.067932147252747e-21,-2.0629371423076922e-21,-2.0579421373626374e-21,-2.052947132417582e-21,-2.0479521274725273e-21,-2.0429571225274724e-21,-2.0379621175824176e-21,-2.0329671126373624e-21,-2.0279721076923075e-21,-2.0229771027472527e-21,-2.017982097802198e-21,-2.0129870928571426e-21,-2.0079920879120878e-21,-2.002997082967033e-21,-1.998002078021978e-21,-1.993007073076923e-21,-1.988012068131868e-21,-1.983017063186813e-21,-1.9780220582417583e-21,-1.973027053296703e-21,-1.9680320483516482e-21,-1.9630370434065934e-21,-1.9580420384615385e-21,-1.9530470335164833e-21,-1.9480520285714284e-21,-1.9430570236263736e-21,-1.9380620186813187e-21,-1.9330670137362635e-21,-1.9280720087912087e-21,-1.923077003846154e-21,-1.918081998901099e-21,-1.9130869939560438e-21,-1.908091989010989e-21,-1.903096984065934e-21,-1.898101979120879e-21,-1.893106974175824e-21,-1.888111969230769e-21,-1.8831169642857143e-21,-1.878121959340659e-21,-1.8731269543956042e-21,-1.8681319494505494e-21,-1.8631369445054945e-21,-1.8581419395604393e-21,-1.8531469346153844e-21,-1.8481519296703296e-21,-1.8431569247252747e-21,-1.8381619197802195e-21,-1.8331669148351647e-21,-1.82817190989011e-21,-1.823176904945055e-21,-1.8181818999999997e-21,-1.813186895054945e-21,-1.80819189010989e-21,-1.8031968851648352e-21,-1.79820188021978e-21,-1.793206875274725e-21,-1.7882118703296703e-21,-1.7832168653846154e-21,-1.7782218604395602e-21,-1.7732268554945054e-21,-1.7682318505494505e-21,-1.7632368456043957e-21,-1.7582418406593404e-21,-1.7532468357142856e-21,-1.7482518307692307e-21,-1.743256825824176e-21,-1.7382618208791207e-21,-1.733266815934066e-21,-1.728271810989011e-21,-1.723276806043956e-21,-1.718281801098901e-21,-1.713286796153846e-21,-1.7082917912087912e-21,-1.7032967862637364e-21,-1.698301781318681e-21,-1.6933067763736263e-21,-1.6883117714285712e-21,-1.6833167664835164e-21,-1.6783217615384614e-21,-1.6733267565934065e-21,-1.6683317516483515e-21,-1.6633367467032966e-21,-1.6583417417582416e-21,-1.6533467368131867e-21,-1.6483517318681317e-21,-1.6433567269230769e-21,-1.6383617219780218e-21,-1.633366717032967e-21,-1.628371712087912e-21,-1.623376707142857e-21,-1.618381702197802e-21,-1.6133866972527472e-21,-1.6083916923076922e-21,-1.6033966873626373e-21,-1.5984016824175823e-21,-1.5934066774725274e-21,-1.5884116725274724e-21,-1.5834166675824175e-21,-1.5784216626373625e-21,-1.5734266576923077e-21,-1.5684316527472526e-21,-1.5634366478021978e-21,-1.5584416428571427e-21,-1.5534466379120879e-21,-1.5484516329670329e-21,-1.543456628021978e-21,-1.538461623076923e-21,-1.5334666181318681e-21,-1.528471613186813e-21,-1.5234766082417582e-21,-1.5184816032967032e-21,-1.5134865983516484e-21,-1.5084915934065933e-21,-1.5034965884615385e-21,-1.4985015835164834e-21,-1.4935065785714286e-21,-1.4885115736263735e-21,-1.4835165686813185e-21,-1.4785215637362637e-21,-1.4735265587912086e-21,-1.4685315538461538e-21,-1.4635365489010987e-21,-1.4585415439560439e-21,-1.4535465390109889e-21,-1.448551534065934e-21,-1.443556529120879e-21,-1.4385615241758241e-21,-1.433566519230769e-21,-1.4285715142857142e-21,-1.4235765093406592e-21,-1.4185815043956044e-21,-1.4135864994505493e-21,-1.4085914945054945e-21,-1.4035964895604394e-21,-1.3986014846153846e-21,-1.3936064796703295e-21,-1.3886114747252747e-21,-1.3836164697802197e-21,-1.3786214648351648e-21,-1.3736264598901098e-21,-1.368631454945055e-21,-1.3636364499999999e-21,-1.358641445054945e-21,-1.35364644010989e-21,-1.3486514351648352e-21,-1.3436564302197801e-21,-1.3386614252747253e-21,-1.3336664203296702e-21,-1.3286714153846154e-21,-1.3236764104395604e-21,-1.3186814054945055e-21,-1.3136864005494505e-21,-1.3086913956043956e-21,-1.3036963906593406e-21,-1.2987013857142857e-21,-1.2937063807692307e-21,-1.2887113758241757e-21,-1.2837163708791208e-21,-1.2787213659340658e-21,-1.273726360989011e-21,-1.2687313560439559e-21,-1.263736351098901e-21,-1.258741346153846e-21,-1.2537463412087912e-21,-1.2487513362637361e-21,-1.2437563313186813e-21,-1.2387613263736262e-21,-1.2337663214285714e-21,-1.2287713164835164e-21,-1.2237763115384615e-21,-1.2187813065934065e-21,-1.2137863016483516e-21,-1.2087912967032966e-21,-1.2037962917582417e-21,-1.1988012868131867e-21,-1.1938062818681318e-21,-1.1888112769230768e-21,-1.183816271978022e-21,-1.178821267032967e-21,-1.173826262087912e-21,-1.168831257142857e-21,-1.1638362521978022e-21,-1.1588412472527472e-21,-1.1538462423076923e-21,-1.1488512373626373e-21,-1.1438562324175824e-21,-1.1388612274725274e-21,-1.1338662225274725e-21,-1.1288712175824175e-21,-1.1238762126373627e-21,-1.1188812076923076e-21,-1.1138862027472528e-21,-1.1088911978021977e-21,-1.1038961928571429e-21,-1.0989011879120878e-21,-1.093906182967033e-21,-1.088911178021978e-21,-1.083916173076923e-21,-1.078921168131868e-21,-1.073926163186813e-21,-1.0689311582417582e-21,-1.0639361532967032e-21,-1.0589411483516483e-21,-1.0539461434065933e-21,-1.0489511384615384e-21,-1.0439561335164834e-21,-1.0389611285714285e-21,-1.0339661236263735e-21,-1.0289711186813187e-21,-1.0239761137362636e-21,-1.0189811087912088e-21,-1.0139861038461537e-21,-1.0089910989010989e-21,-1.0039960939560438e-21,-9.99001089010989e-22,-9.94006084065934e-22,-9.890110791208791e-22,-9.84016074175824e-22,-9.790210692307692e-22,-9.740260642857142e-22,-9.690310593406593e-22,-9.640360543956043e-22,-9.590410494505495e-22,-9.540460445054944e-22,-9.490510395604396e-22,-9.440560346153845e-22,-9.390610296703297e-22,-9.340660247252747e-22,-9.290710197802198e-22,-9.240760148351648e-22,-9.1908100989011e-22,-9.140860049450549e-22,-9.09091e-22,-9.04095995054945e-22,-8.991009901098901e-22,-8.941059851648351e-22,-8.891109802197803e-22,-8.841159752747252e-22,-8.791209703296702e-22,-8.741259653846153e-22,-8.691309604395603e-22,-8.641359554945055e-22,-8.591409505494504e-22,-8.541459456043956e-22,-8.491509406593405e-22,-8.441559357142857e-22,-8.391609307692307e-22,-8.341659258241758e-22,-8.291709208791209e-22,-8.241759159340659e-22,-8.19180910989011e-22,-8.14185906043956e-22,-8.091909010989011e-22,-8.0419589615384615e-22,-7.992008912087912e-22,-7.942058862637363e-22,-7.892108813186813e-22,-7.842158763736263e-22,-7.792208714285713e-22,-7.742258664835164e-22,-7.692308615384615e-22,-7.642358565934065e-22,-7.592408516483516e-22,-7.542458467032966e-22,-7.492508417582417e-22,-7.442558368131867e-22,-7.392608318681318e-22,-7.342658269230769e-22,-7.292708219780219e-22,-7.24275817032967e-22,-7.19280812087912e-22,-7.142858071428571e-22,-7.092908021978021e-22,-7.042957972527472e-22,-6.993007923076923e-22,-6.943057873626373e-22,-6.893107824175824e-22,-6.843157774725274e-22,-6.793207725274725e-22,-6.7432576758241755e-22,-6.693307626373626e-22,-6.643357576923077e-22,-6.593407527472527e-22,-6.543457478021978e-22,-6.493507428571428e-22,-6.443557379120879e-22,-6.3936073296703295e-22,-6.34365728021978e-22,-6.293707230769231e-22,-6.243757181318681e-22,-6.193807131868132e-22,-6.143857082417582e-22,-6.093907032967033e-22,-6.043956983516484e-22,-5.994006934065934e-22,-5.944056884615385e-22,-5.894106835164835e-22,-5.844156785714286e-22,-5.7942067362637355e-22,-5.744256686813186e-22,-5.694306637362637e-22,-5.644356587912087e-22,-5.594406538461538e-22,-5.544456489010988e-22,-5.494506439560439e-22,-5.4445563901098895e-22,-5.39460634065934e-22,-5.344656291208791e-22,-5.294706241758241e-22,-5.244756192307692e-22,-5.194806142857142e-22,-5.144856093406593e-22,-5.094906043956044e-22,-5.044955994505494e-22,-4.995005945054945e-22,-4.945055895604395e-22,-4.895105846153846e-22,-4.845155796703296e-22,-4.795205747252747e-22,-4.745255697802198e-22,-4.695305648351648e-22,-4.645355598901099e-22,-4.595405549450549e-22,-4.5454555e-22,-4.49550545054945e-22,-4.445555401098901e-22,-4.395605351648352e-22,-4.345655302197802e-22,-4.295705252747253e-22,-4.245755203296703e-22,-4.1958051538461534e-22,-4.145855104395604e-22,-4.0959050549450546e-22,-4.045955005494505e-22,-3.9960049560439557e-22,-3.9460549065934063e-22,-3.896104857142857e-22,-3.8461548076923075e-22,-3.796204758241758e-22,-3.7462547087912086e-22,-3.696304659340659e-22,-3.6463546098901098e-22,-3.5964045604395603e-22,-3.546454510989011e-22,-3.4965044615384615e-22,-3.446554412087912e-22,-3.3966043626373626e-22,-3.346654313186813e-22,-3.296704263736264e-22,-3.246754214285714e-22,-3.1968041648351645e-22,-3.146854115384615e-22,-3.0969040659340656e-22,-3.046954016483516e-22,-2.997003967032967e-22,-2.9470539175824173e-22,-2.897103868131868e-22,-2.8471538186813185e-22,-2.797203769230769e-22,-2.7472537197802196e-22,-2.69730367032967e-22,-2.647353620879121e-22,-2.5974035714285714e-22,-2.547453521978022e-22,-2.4975034725274725e-22,-2.447553423076923e-22,-2.3976033736263737e-22,-2.3476533241758242e-22,-2.297703274725275e-22,-2.247753225274725e-22,-2.1978031758241755e-22,-2.147853126373626e-22,-2.097903076923077e-22,-2.0479530274725275e-22,-1.9980029780219778e-22,-1.9480529285714284e-22,-1.898102879120879e-22,-1.8481528296703295e-22,-1.79820278021978e-22,-1.7482527307692307e-22,-1.6983026813186813e-22,-1.6483526318681318e-22,-1.5984025824175824e-22,-1.548452532967033e-22,-1.4985024835164833e-22,-1.448552434065934e-22,-1.3986023846153845e-22,-1.348652335164835e-22,-1.2987022857142856e-22,-1.2487522362637362e-22,-1.1988021868131868e-22,-1.1488521373626374e-22,-1.098902087912088e-22,-1.0489520384615384e-22,-9.99001989010989e-23,-9.490519395604395e-23,-8.991018901098901e-23,-8.491518406593406e-23,-7.992017912087911e-23,-7.492517417582417e-23,-6.993016923076923e-23,-6.493516428571429e-23,-5.994015934065933e-23,-5.494515439560439e-23,-4.995014945054945e-23,-4.4955144505494505e-23,-3.9960139560439557e-23,-3.4965134615384615e-23,-2.9970129670329666e-23,-2.4975124725274724e-23,-1.9980119780219778e-23,-1.4985114835164833e-23,-9.990109890109889e-24,-4.995104945054945e-24,-1.0e-28]} \ No newline at end of file diff --git a/lib/node_modules/@stdlib/math/base/special/asinf/test/fixtures/julia/small_positive.json b/lib/node_modules/@stdlib/math/base/special/asinf/test/fixtures/julia/small_positive.json new file mode 100644 index 000000000000..79562edafd4f --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/asinf/test/fixtures/julia/small_positive.json @@ -0,0 +1 @@ +{"expected":[1.0e-30,9.995004995054946e-31,9.99000999010989e-31,9.985014985164837e-31,9.980019980219781e-31,9.975024975274726e-31,9.970029970329671e-31,9.965034965384616e-31,9.960039960439562e-31,9.955044955494507e-31,9.950049950549452e-31,9.945054945604396e-31,9.940059940659341e-31,9.935064935714286e-31,9.930069930769232e-31,9.925074925824177e-31,9.920079920879122e-31,9.915084915934066e-31,9.910089910989011e-31,9.905094906043958e-31,9.900099901098902e-31,9.895104896153847e-31,9.890109891208792e-31,9.885114886263737e-31,9.880119881318683e-31,9.875124876373628e-31,9.870129871428572e-31,9.865134866483517e-31,9.860139861538462e-31,9.855144856593407e-31,9.850149851648353e-31,9.845154846703298e-31,9.840159841758243e-31,9.835164836813187e-31,9.830169831868132e-31,9.825174826923078e-31,9.820179821978023e-31,9.815184817032968e-31,9.810189812087913e-31,9.805194807142857e-31,9.800199802197804e-31,9.795204797252749e-31,9.790209792307693e-31,9.785214787362638e-31,9.780219782417583e-31,9.775224777472528e-31,9.770229772527474e-31,9.765234767582419e-31,9.760239762637363e-31,9.755244757692308e-31,9.750249752747253e-31,9.7452547478022e-31,9.740259742857144e-31,9.735264737912089e-31,9.730269732967034e-31,9.725274728021978e-31,9.720279723076925e-31,9.71528471813187e-31,9.710289713186814e-31,9.705294708241759e-31,9.700299703296704e-31,9.695304698351648e-31,9.690309693406595e-31,9.68531468846154e-31,9.680319683516484e-31,9.675324678571429e-31,9.670329673626374e-31,9.66533466868132e-31,9.660339663736265e-31,9.65534465879121e-31,9.650349653846154e-31,9.6453546489011e-31,9.640359643956046e-31,9.63536463901099e-31,9.630369634065935e-31,9.62537462912088e-31,9.620379624175825e-31,9.61538461923077e-31,9.610389614285716e-31,9.60539460934066e-31,9.600399604395605e-31,9.59540459945055e-31,9.590409594505495e-31,9.585414589560441e-31,9.580419584615386e-31,9.57542457967033e-31,9.570429574725275e-31,9.56543456978022e-31,9.560439564835166e-31,9.555444559890111e-31,9.550449554945056e-31,9.54545455e-31,9.540459545054945e-31,9.53546454010989e-31,9.530469535164837e-31,9.525474530219781e-31,9.520479525274726e-31,9.51548452032967e-31,9.510489515384615e-31,9.505494510439562e-31,9.500499505494507e-31,9.495504500549451e-31,9.490509495604396e-31,9.48551449065934e-31,9.480519485714287e-31,9.475524480769232e-31,9.470529475824177e-31,9.465534470879122e-31,9.460539465934066e-31,9.455544460989011e-31,9.450549456043957e-31,9.445554451098902e-31,9.440559446153847e-31,9.435564441208792e-31,9.430569436263736e-31,9.425574431318683e-31,9.420579426373628e-31,9.415584421428572e-31,9.410589416483517e-31,9.405594411538462e-31,9.400599406593408e-31,9.395604401648353e-31,9.390609396703298e-31,9.385614391758242e-31,9.380619386813187e-31,9.375624381868132e-31,9.370629376923078e-31,9.365634371978023e-31,9.360639367032968e-31,9.355644362087913e-31,9.350649357142857e-31,9.345654352197804e-31,9.340659347252748e-31,9.335664342307693e-31,9.330669337362638e-31,9.325674332417583e-31,9.320679327472529e-31,9.315684322527474e-31,9.310689317582419e-31,9.305694312637363e-31,9.300699307692308e-31,9.295704302747253e-31,9.2907092978022e-31,9.285714292857144e-31,9.280719287912089e-31,9.275724282967033e-31,9.270729278021978e-31,9.265734273076925e-31,9.26073926813187e-31,9.255744263186814e-31,9.250749258241759e-31,9.245754253296703e-31,9.24075924835165e-31,9.235764243406595e-31,9.23076923846154e-31,9.225774233516484e-31,9.220779228571429e-31,9.215784223626374e-31,9.21078921868132e-31,9.205794213736265e-31,9.20079920879121e-31,9.195804203846154e-31,9.190809198901099e-31,9.185814193956045e-31,9.18081918901099e-31,9.175824184065935e-31,9.17082917912088e-31,9.165834174175824e-31,9.16083916923077e-31,9.155844164285716e-31,9.15084915934066e-31,9.145854154395605e-31,9.14085914945055e-31,9.135864144505494e-31,9.130869139560441e-31,9.125874134615386e-31,9.12087912967033e-31,9.115884124725275e-31,9.11088911978022e-31,9.105894114835166e-31,9.100899109890111e-31,9.095904104945056e-31,9.0909091e-31,9.085914095054945e-31,9.080919090109892e-31,9.075924085164836e-31,9.070929080219781e-31,9.065934075274726e-31,9.06093907032967e-31,9.055944065384615e-31,9.050949060439562e-31,9.045954055494507e-31,9.040959050549451e-31,9.035964045604396e-31,9.03096904065934e-31,9.025974035714287e-31,9.020979030769232e-31,9.015984025824177e-31,9.010989020879121e-31,9.005994015934066e-31,9.000999010989013e-31,8.996004006043957e-31,8.991009001098902e-31,8.986013996153847e-31,8.981018991208791e-31,8.976023986263736e-31,8.971028981318683e-31,8.966033976373627e-31,8.961038971428572e-31,8.956043966483517e-31,8.951048961538462e-31,8.946053956593408e-31,8.941058951648353e-31,8.936063946703297e-31,8.931068941758242e-31,8.926073936813187e-31,8.921078931868133e-31,8.916083926923078e-31,8.911088921978023e-31,8.906093917032968e-31,8.901098912087912e-31,8.896103907142857e-31,8.891108902197804e-31,8.886113897252748e-31,8.881118892307693e-31,8.876123887362638e-31,8.871128882417582e-31,8.866133877472529e-31,8.861138872527474e-31,8.856143867582418e-31,8.851148862637363e-31,8.846153857692308e-31,8.841158852747254e-31,8.836163847802199e-31,8.831168842857144e-31,8.826173837912088e-31,8.821178832967033e-31,8.816183828021978e-31,8.811188823076924e-31,8.80619381813187e-31,8.801198813186814e-31,8.796203808241759e-31,8.791208803296703e-31,8.78621379835165e-31,8.781218793406595e-31,8.77622378846154e-31,8.771228783516484e-31,8.766233778571429e-31,8.761238773626375e-31,8.75624376868132e-31,8.751248763736265e-31,8.74625375879121e-31,8.741258753846154e-31,8.736263748901099e-31,8.731268743956045e-31,8.72627373901099e-31,8.721278734065935e-31,8.71628372912088e-31,8.711288724175824e-31,8.70629371923077e-31,8.701298714285715e-31,8.69630370934066e-31,8.691308704395605e-31,8.68631369945055e-31,8.681318694505496e-31,8.67632368956044e-31,8.671328684615385e-31,8.66633367967033e-31,8.661338674725275e-31,8.65634366978022e-31,8.651348664835166e-31,8.64635365989011e-31,8.641358654945056e-31,8.63636365e-31,8.631368645054945e-31,8.626373640109892e-31,8.621378635164836e-31,8.616383630219781e-31,8.611388625274726e-31,8.60639362032967e-31,8.601398615384617e-31,8.596403610439562e-31,8.591408605494506e-31,8.586413600549451e-31,8.581418595604396e-31,8.57642359065934e-31,8.571428585714287e-31,8.566433580769232e-31,8.561438575824176e-31,8.556443570879121e-31,8.551448565934066e-31,8.546453560989012e-31,8.541458556043957e-31,8.536463551098902e-31,8.531468546153847e-31,8.526473541208791e-31,8.521478536263738e-31,8.516483531318682e-31,8.511488526373627e-31,8.506493521428572e-31,8.501498516483517e-31,8.496503511538461e-31,8.491508506593408e-31,8.486513501648353e-31,8.481518496703297e-31,8.476523491758242e-31,8.471528486813187e-31,8.466533481868133e-31,8.461538476923078e-31,8.456543471978023e-31,8.451548467032967e-31,8.446553462087912e-31,8.441558457142859e-31,8.436563452197803e-31,8.431568447252748e-31,8.426573442307693e-31,8.421578437362638e-31,8.416583432417582e-31,8.411588427472529e-31,8.406593422527473e-31,8.401598417582418e-31,8.396603412637363e-31,8.391608407692308e-31,8.386613402747254e-31,8.381618397802199e-31,8.376623392857144e-31,8.371628387912088e-31,8.366633382967033e-31,8.36163837802198e-31,8.356643373076924e-31,8.351648368131869e-31,8.346653363186814e-31,8.341658358241758e-31,8.336663353296703e-31,8.33166834835165e-31,8.326673343406594e-31,8.321678338461539e-31,8.316683333516484e-31,8.311688328571429e-31,8.306693323626375e-31,8.30169831868132e-31,8.296703313736264e-31,8.29170830879121e-31,8.286713303846154e-31,8.2817182989011e-31,8.276723293956045e-31,8.27172828901099e-31,8.266733284065935e-31,8.26173827912088e-31,8.256743274175824e-31,8.25174826923077e-31,8.246753264285715e-31,8.24175825934066e-31,8.236763254395605e-31,8.23176824945055e-31,8.226773244505496e-31,8.22177823956044e-31,8.216783234615385e-31,8.21178822967033e-31,8.206793224725275e-31,8.201798219780221e-31,8.196803214835166e-31,8.19180820989011e-31,8.186813204945055e-31,8.1818182e-31,8.176823195054945e-31,8.171828190109891e-31,8.166833185164836e-31,8.16183818021978e-31,8.156843175274726e-31,8.15184817032967e-31,8.146853165384617e-31,8.141858160439561e-31,8.136863155494506e-31,8.131868150549451e-31,8.126873145604396e-31,8.121878140659342e-31,8.116883135714287e-31,8.111888130769232e-31,8.106893125824176e-31,8.101898120879121e-31,8.096903115934067e-31,8.091908110989012e-31,8.086913106043957e-31,8.081918101098902e-31,8.076923096153846e-31,8.071928091208791e-31,8.066933086263738e-31,8.061938081318682e-31,8.056943076373627e-31,8.051948071428572e-31,8.046953066483516e-31,8.041958061538463e-31,8.036963056593408e-31,8.031968051648352e-31,8.026973046703297e-31,8.021978041758242e-31,8.016983036813188e-31,8.011988031868133e-31,8.006993026923078e-31,8.001998021978023e-31,7.997003017032967e-31,7.992008012087912e-31,7.987013007142858e-31,7.982018002197803e-31,7.977022997252748e-31,7.972027992307693e-31,7.967032987362637e-31,7.962037982417584e-31,7.957042977472529e-31,7.952047972527473e-31,7.947052967582418e-31,7.942057962637363e-31,7.93706295769231e-31,7.932067952747254e-31,7.927072947802199e-31,7.922077942857143e-31,7.917082937912088e-31,7.912087932967033e-31,7.90709292802198e-31,7.902097923076924e-31,7.897102918131869e-31,7.892107913186814e-31,7.887112908241759e-31,7.882117903296704e-31,7.877122898351649e-31,7.872127893406594e-31,7.867132888461539e-31,7.8621378835164845e-31,7.857142878571429e-31,7.852147873626374e-31,7.8471528686813195e-31,7.842157863736264e-31,7.83716285879121e-31,7.832167853846155e-31,7.827172848901099e-31,7.822177843956045e-31,7.81718283901099e-31,7.812187834065934e-31,7.80719282912088e-31,7.802197824175825e-31,7.79720281923077e-31,7.792207814285715e-31,7.78721280934066e-31,7.782217804395605e-31,7.77722279945055e-31,7.772227794505495e-31,7.76723278956044e-31,7.762237784615385e-31,7.757242779670331e-31,7.7522477747252755e-31,7.74725276978022e-31,7.742257764835166e-31,7.7372627598901105e-31,7.732267754945055e-31,7.727272750000001e-31,7.722277745054946e-31,7.717282740109891e-31,7.712287735164836e-31,7.707292730219781e-31,7.702297725274726e-31,7.697302720329671e-31,7.692307715384616e-31,7.687312710439561e-31,7.682317705494506e-31,7.677322700549452e-31,7.672327695604396e-31,7.667332690659341e-31,7.662337685714287e-31,7.657342680769231e-31,7.652347675824176e-31,7.647352670879122e-31,7.642357665934066e-31,7.637362660989012e-31,7.632367656043957e-31,7.6273726510989015e-31,7.622377646153847e-31,7.617382641208792e-31,7.6123876362637365e-31,7.607392631318682e-31,7.602397626373627e-31,7.5974026214285725e-31,7.592407616483517e-31,7.587412611538462e-31,7.5824176065934075e-31,7.577422601648352e-31,7.572427596703297e-31,7.567432591758243e-31,7.562437586813187e-31,7.557442581868133e-31,7.552447576923078e-31,7.547452571978022e-31,7.542457567032968e-31,7.537462562087913e-31,7.532467557142857e-31,7.527472552197803e-31,7.522477547252748e-31,7.517482542307693e-31,7.512487537362638e-31,7.507492532417583e-31,7.502497527472528e-31,7.497502522527473e-31,7.492507517582418e-31,7.4875125126373634e-31,7.482517507692308e-31,7.477522502747254e-31,7.4725274978021985e-31,7.467532492857143e-31,7.462537487912089e-31,7.4575424829670335e-31,7.452547478021978e-31,7.447552473076924e-31,7.442557468131869e-31,7.437562463186814e-31,7.432567458241759e-31,7.427572453296704e-31,7.422577448351649e-31,7.417582443406594e-31,7.412587438461539e-31,7.407592433516484e-31,7.402597428571429e-31,7.397602423626375e-31,7.392607418681319e-31,7.387612413736264e-31,7.38261740879121e-31,7.377622403846154e-31,7.372627398901099e-31,7.367632393956045e-31,7.3626373890109895e-31,7.357642384065935e-31,7.35264737912088e-31,7.3476523741758245e-31,7.34265736923077e-31,7.337662364285715e-31,7.33266735934066e-31,7.327672354395605e-31,7.32267734945055e-31,7.3176823445054955e-31,7.31268733956044e-31,7.307692334615385e-31,7.3026973296703306e-31,7.297702324725275e-31,7.29270731978022e-31,7.287712314835166e-31,7.28271730989011e-31,7.277722304945056e-31,7.272727300000001e-31,7.267732295054945e-31,7.262737290109891e-31,7.257742285164836e-31,7.2527472802197804e-31,7.247752275274726e-31,7.242757270329671e-31,7.237762265384616e-31,7.232767260439561e-31,7.227772255494506e-31,7.222777250549451e-31,7.217782245604396e-31,7.212787240659341e-31,7.2077922357142865e-31,7.202797230769231e-31,7.197802225824177e-31,7.1928072208791215e-31,7.187812215934066e-31,7.182817210989012e-31,7.177822206043957e-31,7.172827201098901e-31,7.167832196153847e-31,7.162837191208792e-31,7.157842186263737e-31,7.152847181318682e-31,7.147852176373627e-31,7.142857171428572e-31,7.137862166483517e-31,7.132867161538462e-31,7.127872156593407e-31,7.122877151648352e-31,7.117882146703298e-31,7.112887141758242e-31,7.107892136813187e-31,7.102897131868133e-31,7.0979021269230775e-31,7.092907121978022e-31,7.087912117032968e-31,7.0829171120879125e-31,7.077922107142858e-31,7.072927102197803e-31,7.0679320972527476e-31,7.062937092307693e-31,7.057942087362638e-31,7.052947082417583e-31,7.047952077472528e-31,7.042957072527473e-31,7.0379620675824185e-31,7.032967062637363e-31,7.027972057692308e-31,7.022977052747254e-31,7.017982047802198e-31,7.012987042857143e-31,7.007992037912089e-31,7.002997032967033e-31,6.998002028021979e-31,6.993007023076924e-31,6.988012018131868e-31,6.983017013186814e-31,6.978022008241759e-31,6.9730270032967035e-31,6.968031998351649e-31,6.963036993406594e-31,6.958041988461539e-31,6.953046983516484e-31,6.948051978571429e-31,6.9430569736263745e-31,6.938061968681319e-31,6.933066963736264e-31,6.9280719587912095e-31,6.923076953846154e-31,6.9180819489011e-31,6.913086943956045e-31,6.908091939010989e-31,6.903096934065935e-31,6.89810192912088e-31,6.893106924175824e-31,6.88811191923077e-31,6.883116914285715e-31,6.87812190934066e-31,6.873126904395605e-31,6.86813189945055e-31,6.863136894505495e-31,6.85814188956044e-31,6.853146884615385e-31,6.84815187967033e-31,6.843156874725275e-31,6.838161869780221e-31,6.8331668648351654e-31,6.82817185989011e-31,6.823176854945056e-31,6.8181818500000005e-31,6.813186845054945e-31,6.808191840109891e-31,6.8031968351648355e-31,6.798201830219781e-31,6.793206825274726e-31,6.788211820329671e-31,6.783216815384616e-31,6.778221810439561e-31,6.773226805494506e-31,6.768231800549451e-31,6.763236795604396e-31,6.758241790659342e-31,6.753246785714286e-31,6.748251780769231e-31,6.743256775824177e-31,6.738261770879121e-31,6.733266765934066e-31,6.728271760989012e-31,6.723276756043956e-31,6.718281751098902e-31,6.713286746153847e-31,6.7082917412087915e-31,6.703296736263737e-31,6.698301731318682e-31,6.6933067263736265e-31,6.688311721428572e-31,6.683316716483517e-31,6.6783217115384624e-31,6.673326706593407e-31,6.668331701648352e-31,6.6633366967032975e-31,6.658341691758242e-31,6.653346686813187e-31,6.6483516818681326e-31,6.643356676923077e-31,6.638361671978023e-31,6.633366667032968e-31,6.628371662087912e-31,6.623376657142858e-31,6.618381652197803e-31,6.613386647252747e-31,6.608391642307693e-31,6.603396637362638e-31,6.598401632417583e-31,6.593406627472528e-31,6.588411622527473e-31,6.583416617582418e-31,6.578421612637363e-31,6.573426607692308e-31,6.568431602747253e-31,6.563436597802198e-31,6.558441592857144e-31,6.5534465879120885e-31,6.548451582967033e-31,6.543456578021979e-31,6.5384615730769235e-31,6.533466568131868e-31,6.528471563186814e-31,6.523476558241759e-31,6.518481553296704e-31,6.513486548351649e-31,6.508491543406594e-31,6.503496538461539e-31,6.498501533516484e-31,6.493506528571429e-31,6.488511523626374e-31,6.483516518681319e-31,6.478521513736265e-31,6.473526508791209e-31,6.468531503846154e-31,6.4635364989011e-31,6.458541493956044e-31,6.453546489010989e-31,6.448551484065935e-31,6.4435564791208795e-31,6.438561474175825e-31,6.43356646923077e-31,6.4285714642857145e-31,6.42357645934066e-31,6.418581454395605e-31,6.4135864494505496e-31,6.408591444505495e-31,6.40359643956044e-31,6.3986014346153855e-31,6.39360642967033e-31,6.388611424725275e-31,6.3836164197802205e-31,6.378621414835165e-31,6.37362640989011e-31,6.368631404945056e-31,6.3636364e-31,6.358641395054946e-31,6.353646390109891e-31,6.348651385164835e-31,6.343656380219781e-31,6.338661375274726e-31,6.33366637032967e-31,6.328671365384616e-31,6.323676360439561e-31,6.318681355494506e-31,6.313686350549451e-31,6.308691345604396e-31,6.303696340659341e-31,6.298701335714286e-31,6.293706330769231e-31,6.2887113258241765e-31,6.283716320879121e-31,6.278721315934067e-31,6.2737263109890115e-31,6.268731306043956e-31,6.263736301098902e-31,6.258741296153847e-31,6.253746291208791e-31,6.248751286263737e-31,6.243756281318682e-31,6.238761276373627e-31,6.233766271428572e-31,6.228771266483517e-31,6.223776261538462e-31,6.218781256593407e-31,6.213786251648353e-31,6.208791246703297e-31,6.203796241758242e-31,6.198801236813188e-31,6.193806231868132e-31,6.188811226923077e-31,6.183816221978023e-31,6.178821217032967e-31,6.173826212087913e-31,6.168831207142858e-31,6.1638362021978025e-31,6.158841197252748e-31,6.153846192307693e-31,6.1488511873626375e-31,6.143856182417583e-31,6.138861177472528e-31,6.1338661725274735e-31,6.128871167582418e-31,6.123876162637363e-31,6.1188811576923085e-31,6.113886152747253e-31,6.108891147802198e-31,6.103896142857144e-31,6.098901137912088e-31,6.093906132967034e-31,6.088911128021979e-31,6.083916123076923e-31,6.078921118131869e-31,6.073926113186814e-31,6.068931108241758e-31,6.063936103296704e-31,6.058941098351649e-31,6.053946093406594e-31,6.048951088461539e-31,6.043956083516484e-31,6.038961078571429e-31,6.033966073626374e-31,6.028971068681319e-31,6.0239760637362644e-31,6.018981058791209e-31,6.013986053846155e-31,6.0089910489010995e-31,6.003996043956044e-31,5.99900103901099e-31,5.9940060340659346e-31,5.989011029120879e-31,5.984016024175825e-31,5.97902101923077e-31,5.974026014285715e-31,5.96903100934066e-31,5.964036004395605e-31,5.95904099945055e-31,5.954045994505495e-31,5.94905098956044e-31,5.944055984615385e-31,5.93906097967033e-31,5.934065974725276e-31,5.92907096978022e-31,5.924075964835165e-31,5.919080959890111e-31,5.914085954945055e-31,5.90909095e-31,5.904095945054946e-31,5.8991009401098905e-31,5.894105935164836e-31,5.889110930219781e-31,5.8841159252747255e-31,5.879120920329671e-31,5.874125915384616e-31,5.869130910439561e-31,5.864135905494506e-31,5.859140900549451e-31,5.8541458956043965e-31,5.849150890659341e-31,5.844155885714286e-31,5.8391608807692316e-31,5.834165875824176e-31,5.829170870879121e-31,5.824175865934067e-31,5.819180860989011e-31,5.814185856043957e-31,5.809190851098902e-31,5.804195846153846e-31,5.799200841208792e-31,5.794205836263737e-31,5.7892108313186814e-31,5.784215826373627e-31,5.779220821428572e-31,5.774225816483517e-31,5.769230811538462e-31,5.764235806593407e-31,5.759240801648352e-31,5.754245796703297e-31,5.749250791758242e-31,5.7442557868131875e-31,5.739260781868132e-31,5.734265776923078e-31,5.7292707719780225e-31,5.724275767032967e-31,5.719280762087913e-31,5.714285757142858e-31,5.709290752197802e-31,5.704295747252748e-31,5.699300742307693e-31,5.694305737362638e-31,5.689310732417583e-31,5.684315727472528e-31,5.679320722527473e-31,5.674325717582418e-31,5.669330712637363e-31,5.664335707692308e-31,5.659340702747253e-31,5.654345697802199e-31,5.649350692857143e-31,5.644355687912088e-31,5.639360682967034e-31,5.6343656780219785e-31,5.629370673076923e-31,5.624375668131869e-31,5.6193806631868135e-31,5.614385658241759e-31,5.609390653296704e-31,5.604395648351649e-31,5.599400643406594e-31,5.594405638461539e-31,5.589410633516484e-31,5.584415628571429e-31,5.579420623626374e-31,5.5744256186813195e-31,5.569430613736264e-31,5.564435608791209e-31,5.559440603846155e-31,5.554445598901099e-31,5.549450593956044e-31,5.54445558901099e-31,5.539460584065934e-31,5.53446557912088e-31,5.529470574175825e-31,5.524475569230769e-31,5.519480564285715e-31,5.51448555934066e-31,5.5094905543956045e-31,5.50449554945055e-31,5.499500544505495e-31,5.49450553956044e-31,5.489510534615385e-31,5.48451552967033e-31,5.4795205247252755e-31,5.47452551978022e-31,5.469530514835165e-31,5.4645355098901105e-31,5.459540504945055e-31,5.454545500000001e-31,5.449550495054946e-31,5.44455549010989e-31,5.439560485164836e-31,5.434565480219781e-31,5.429570475274725e-31,5.424575470329671e-31,5.419580465384616e-31,5.414585460439561e-31,5.409590455494506e-31,5.404595450549451e-31,5.399600445604396e-31,5.394605440659341e-31,5.389610435714286e-31,5.384615430769231e-31,5.379620425824176e-31,5.374625420879122e-31,5.3696304159340664e-31,5.364635410989011e-31,5.359640406043957e-31,5.3546454010989015e-31,5.349650396153846e-31,5.344655391208792e-31,5.3396603862637365e-31,5.334665381318682e-31,5.329670376373627e-31,5.324675371428572e-31,5.319680366483517e-31,5.314685361538462e-31,5.309690356593407e-31,5.304695351648352e-31,5.299700346703297e-31,5.294705341758243e-31,5.289710336813187e-31,5.284715331868132e-31,5.279720326923078e-31,5.274725321978022e-31,5.269730317032967e-31,5.264735312087913e-31,5.259740307142857e-31,5.254745302197803e-31,5.249750297252748e-31,5.2447552923076925e-31,5.239760287362638e-31,5.234765282417583e-31,5.2297702774725275e-31,5.224775272527473e-31,5.219780267582418e-31,5.2147852626373634e-31,5.209790257692308e-31,5.204795252747253e-31,5.1998002478021985e-31,5.194805242857143e-31,5.189810237912088e-31,5.1848152329670336e-31,5.179820228021978e-31,5.174825223076924e-31,5.169830218131869e-31,5.164835213186813e-31,5.159840208241759e-31,5.154845203296704e-31,5.149850198351648e-31,5.144855193406594e-31,5.139860188461539e-31,5.134865183516484e-31,5.129870178571429e-31,5.124875173626374e-31,5.119880168681319e-31,5.114885163736264e-31,5.109890158791209e-31,5.104895153846154e-31,5.099900148901099e-31,5.094905143956045e-31,5.0899101390109895e-31,5.084915134065934e-31,5.07992012912088e-31,5.0749251241758245e-31,5.069930119230769e-31,5.064935114285715e-31,5.05994010934066e-31,5.054945104395605e-31,5.04995009945055e-31,5.044955094505495e-31,5.03996008956044e-31,5.034965084615385e-31,5.02997007967033e-31,5.024975074725275e-31,5.01998006978022e-31,5.014985064835166e-31,5.00999005989011e-31,5.004995054945055e-31,5.000000050000001e-31,4.995005045054945e-31,4.99001004010989e-31,4.985015035164836e-31,4.9800200302197805e-31,4.975025025274726e-31,4.970030020329671e-31,4.9650350153846155e-31,4.960040010439561e-31,4.955045005494506e-31,4.9500500005494506e-31,4.945054995604396e-31,4.940059990659341e-31,4.9350649857142865e-31,4.930069980769231e-31,4.925074975824176e-31,4.9200799708791215e-31,4.915084965934066e-31,4.910089960989011e-31,4.905094956043957e-31,4.900099951098901e-31,4.895104946153847e-31,4.890109941208792e-31,4.885114936263736e-31,4.880119931318682e-31,4.875124926373627e-31,4.870129921428571e-31,4.865134916483517e-31,4.860139911538462e-31,4.855144906593407e-31,4.850149901648352e-31,4.845154896703297e-31,4.840159891758242e-31,4.835164886813187e-31,4.830169881868132e-31,4.8251748769230775e-31,4.820179871978022e-31,4.815184867032968e-31,4.8101898620879125e-31,4.805194857142857e-31,4.800199852197803e-31,4.795204847252748e-31,4.790209842307692e-31,4.785214837362638e-31,4.780219832417583e-31,4.775224827472528e-31,4.770229822527473e-31,4.765234817582418e-31,4.760239812637363e-31,4.755244807692308e-31,4.750249802747253e-31,4.745254797802198e-31,4.740259792857143e-31,4.735264787912089e-31,4.730269782967033e-31,4.725274778021978e-31,4.720279773076924e-31,4.715284768131868e-31,4.710289763186813e-31,4.705294758241759e-31,4.7002997532967035e-31,4.695304748351649e-31,4.690309743406594e-31,4.6853147384615385e-31,4.680319733516484e-31,4.675324728571429e-31,4.670329723626374e-31,4.665334718681319e-31,4.660339713736264e-31,4.6553447087912095e-31,4.650349703846154e-31,4.645354698901099e-31,4.640359693956045e-31,4.635364689010989e-31,4.630369684065934e-31,4.62537467912088e-31,4.620379674175824e-31,4.61538466923077e-31,4.610389664285715e-31,4.605394659340659e-31,4.600399654395605e-31,4.59540464945055e-31,4.5904096445054945e-31,4.58541463956044e-31,4.580419634615385e-31,4.57542462967033e-31,4.570429624725275e-31,4.56543461978022e-31,4.5604396148351654e-31,4.55544460989011e-31,4.550449604945055e-31,4.5454546000000005e-31,4.540459595054945e-31,4.535464590109891e-31,4.5304695851648356e-31,4.52547458021978e-31,4.520479575274726e-31,4.515484570329671e-31,4.510489565384615e-31,4.505494560439561e-31,4.500499555494506e-31,4.495504550549451e-31,4.490509545604396e-31,4.485514540659341e-31,4.480519535714286e-31,4.475524530769231e-31,4.470529525824176e-31,4.465534520879121e-31,4.460539515934066e-31,4.455544510989012e-31,4.450549506043956e-31,4.445554501098901e-31,4.440559496153847e-31,4.4355644912087915e-31,4.430569486263736e-31,4.425574481318682e-31,4.4205794763736265e-31,4.415584471428572e-31,4.410589466483517e-31,4.405594461538462e-31,4.400599456593407e-31,4.395604451648352e-31,4.390609446703297e-31,4.385614441758242e-31,4.380619436813187e-31,4.3756244318681326e-31,4.370629426923077e-31,4.365634421978022e-31,4.360639417032968e-31,4.355644412087912e-31,4.350649407142858e-31,4.345654402197803e-31,4.340659397252747e-31,4.335664392307693e-31,4.330669387362638e-31,4.3256743824175824e-31,4.320679377472528e-31,4.315684372527473e-31,4.310689367582418e-31,4.305694362637363e-31,4.300699357692308e-31,4.295704352747253e-31,4.290709347802198e-31,4.285714342857143e-31,4.2807193379120885e-31,4.275724332967033e-31,4.270729328021979e-31,4.2657343230769235e-31,4.260739318131868e-31,4.255744313186814e-31,4.250749308241759e-31,4.245754303296703e-31,4.240759298351649e-31,4.235764293406594e-31,4.230769288461539e-31,4.225774283516484e-31,4.220779278571429e-31,4.215784273626374e-31,4.210789268681319e-31,4.205794263736264e-31,4.200799258791209e-31,4.195804253846154e-31,4.1908092489011e-31,4.185814243956044e-31,4.180819239010989e-31,4.175824234065935e-31,4.1708292291208795e-31,4.165834224175824e-31,4.16083921923077e-31,4.1558442142857145e-31,4.15084920934066e-31,4.145854204395605e-31,4.14085919945055e-31,4.135864194505495e-31,4.13086918956044e-31,4.125874184615385e-31,4.12087917967033e-31,4.115884174725275e-31,4.1108891697802205e-31,4.105894164835165e-31,4.10089915989011e-31,4.095904154945056e-31,4.09090915e-31,4.085914145054945e-31,4.080919140109891e-31,4.075924135164835e-31,4.070929130219781e-31,4.065934125274726e-31,4.06093912032967e-31,4.055944115384616e-31,4.050949110439561e-31,4.0459541054945055e-31,4.040959100549451e-31,4.035964095604396e-31,4.030969090659341e-31,4.025974085714286e-31,4.020979080769231e-31,4.0159840758241765e-31,4.010989070879121e-31,4.005994065934066e-31,4.0009990609890115e-31,3.996004056043956e-31,3.991009051098902e-31,3.986014046153847e-31,3.981019041208791e-31,3.976024036263737e-31,3.971029031318682e-31,3.966034026373626e-31,3.961039021428572e-31,3.956044016483517e-31,3.951049011538462e-31,3.946054006593407e-31,3.941059001648352e-31,3.936063996703297e-31,3.931068991758242e-31,3.9260739868131872e-31,3.9210789818681324e-31,3.916083976923077e-31,3.9110889719780223e-31,3.9060939670329674e-31,3.9010989620879126e-31,3.8961039571428573e-31,3.8911089521978025e-31,3.8861139472527477e-31,3.881118942307693e-31,3.8761239373626375e-31,3.8711289324175827e-31,3.866133927472528e-31,3.861138922527473e-31,3.8561439175824178e-31,3.851148912637363e-31,3.846153907692308e-31,3.8411589027472533e-31,3.836163897802198e-31,3.831168892857143e-31,3.8261738879120883e-31,3.8211788829670335e-31,3.816183878021978e-31,3.8111888730769234e-31,3.8061938681318685e-31,3.8011988631868137e-31,3.7962038582417584e-31,3.7912088532967036e-31,3.7862138483516487e-31,3.781218843406594e-31,3.7762238384615386e-31,3.771228833516484e-31,3.766233828571429e-31,3.761238823626374e-31,3.756243818681319e-31,3.751248813736264e-31,3.746253808791209e-31,3.7412588038461543e-31,3.736263798901099e-31,3.7312687939560442e-31,3.7262737890109894e-31,3.7212787840659346e-31,3.7162837791208793e-31,3.7112887741758244e-31,3.7062937692307696e-31,3.7012987642857148e-31,3.6963037593406595e-31,3.6913087543956047e-31,3.68631374945055e-31,3.681318744505495e-31,3.6763237395604397e-31,3.671328734615385e-31,3.66633372967033e-31,3.661338724725275e-31,3.65634371978022e-31,3.651348714835165e-31,3.6463537098901103e-31,3.6413587049450554e-31,3.6363637e-31,3.6313686950549453e-31,3.6263736901098905e-31,3.6213786851648356e-31,3.6163836802197804e-31,3.6113886752747255e-31,3.6063936703296707e-31,3.601398665384616e-31,3.5964036604395606e-31,3.5914086554945057e-31,3.586413650549451e-31,3.581418645604396e-31,3.576423640659341e-31,3.571428635714286e-31,3.566433630769231e-31,3.5614386258241763e-31,3.556443620879121e-31,3.551448615934066e-31,3.5464536109890113e-31,3.5414586060439565e-31,3.5364636010989012e-31,3.5314685961538464e-31,3.5264735912087916e-31,3.5214785862637367e-31,3.5164835813186815e-31,3.5114885763736266e-31,3.5064935714285718e-31,3.501498566483517e-31,3.4965035615384617e-31,3.491508556593407e-31,3.486513551648352e-31,3.481518546703297e-31,3.476523541758242e-31,3.471528536813187e-31,3.466533531868132e-31,3.4615385269230774e-31,3.456543521978022e-31,3.4515485170329673e-31,3.4465535120879124e-31,3.4415585071428576e-31,3.4365635021978023e-31,3.4315684972527475e-31,3.4265734923076926e-31,3.421578487362638e-31,3.4165834824175825e-31,3.4115884774725277e-31,3.406593472527473e-31,3.401598467582418e-31,3.3966034626373628e-31,3.391608457692308e-31,3.386613452747253e-31,3.3816184478021982e-31,3.376623442857143e-31,3.371628437912088e-31,3.3666334329670333e-31,3.3616384280219785e-31,3.356643423076923e-31,3.3516484181318684e-31,3.3466534131868135e-31,3.3416584082417587e-31,3.3366634032967034e-31,3.3316683983516486e-31,3.3266733934065937e-31,3.321678388461539e-31,3.3166833835164836e-31,3.311688378571429e-31,3.306693373626374e-31,3.301698368681319e-31,3.296703363736264e-31,3.291708358791209e-31,3.286713353846154e-31,3.2817183489010993e-31,3.276723343956044e-31,3.2717283390109892e-31,3.2667333340659344e-31,3.2617383291208795e-31,3.2567433241758243e-31,3.2517483192307694e-31,3.2467533142857146e-31,3.2417583093406598e-31,3.2367633043956045e-31,3.2317682994505497e-31,3.226773294505495e-31,3.22177828956044e-31,3.2167832846153847e-31,3.21178827967033e-31,3.206793274725275e-31,3.20179826978022e-31,3.196803264835165e-31,3.19180825989011e-31,3.1868132549450553e-31,3.1818182500000004e-31,3.176823245054945e-31,3.1718282401098903e-31,3.1668332351648355e-31,3.1618382302197806e-31,3.1568432252747254e-31,3.1518482203296705e-31,3.1468532153846157e-31,3.141858210439561e-31,3.1368632054945056e-31,3.1318682005494507e-31,3.126873195604396e-31,3.121878190659341e-31,3.116883185714286e-31,3.111888180769231e-31,3.106893175824176e-31,3.1018981708791213e-31,3.096903165934066e-31,3.091908160989011e-31,3.0869131560439563e-31,3.0819181510989015e-31,3.0769231461538462e-31,3.0719281412087914e-31,3.0669331362637366e-31,3.0619381313186817e-31,3.0569431263736264e-31,3.0519481214285716e-31,3.0469531164835168e-31,3.041958111538462e-31,3.0369631065934067e-31,3.031968101648352e-31,3.026973096703297e-31,3.021978091758242e-31,3.016983086813187e-31,3.011988081868132e-31,3.006993076923077e-31,3.0019980719780224e-31,2.997003067032967e-31,2.9920080620879123e-31,2.9870130571428574e-31,2.9820180521978026e-31,2.9770230472527473e-31,2.9720280423076925e-31,2.9670330373626376e-31,2.962038032417583e-31,2.9570430274725275e-31,2.9520480225274727e-31,2.947053017582418e-31,2.942058012637363e-31,2.9370630076923077e-31,2.932068002747253e-31,2.927072997802198e-31,2.9220779928571432e-31,2.917082987912088e-31,2.912087982967033e-31,2.9070929780219783e-31,2.9020979730769235e-31,2.897102968131868e-31,2.8921079631868133e-31,2.8871129582417585e-31,2.8821179532967037e-31,2.8771229483516484e-31,2.8721279434065936e-31,2.8671329384615387e-31,2.862137933516484e-31,2.8571429285714286e-31,2.8521479236263738e-31,2.847152918681319e-31,2.842157913736264e-31,2.837162908791209e-31,2.832167903846154e-31,2.827172898901099e-31,2.8221778939560443e-31,2.817182889010989e-31,2.812187884065934e-31,2.8071928791208794e-31,2.8021978741758245e-31,2.7972028692307693e-31,2.7922078642857144e-31,2.7872128593406596e-31,2.7822178543956048e-31,2.7772228494505495e-31,2.7722278445054946e-31,2.76723283956044e-31,2.762237834615385e-31,2.7572428296703297e-31,2.752247824725275e-31,2.74725281978022e-31,2.742257814835165e-31,2.73726280989011e-31,2.732267804945055e-31,2.7272728000000002e-31,2.7222777950549454e-31,2.71728279010989e-31,2.7122877851648353e-31,2.7072927802197805e-31,2.7022977752747256e-31,2.6973027703296703e-31,2.6923077653846155e-31,2.6873127604395607e-31,2.682317755494506e-31,2.6773227505494506e-31,2.6723277456043957e-31,2.667332740659341e-31,2.662337735714286e-31,2.6573427307692308e-31,2.652347725824176e-31,2.647352720879121e-31,2.6423577159340663e-31,2.637362710989011e-31,2.632367706043956e-31,2.6273727010989013e-31,2.6223776961538465e-31,2.617382691208791e-31,2.6123876862637364e-31,2.6073926813186815e-31,2.6023976763736267e-31,2.5974026714285714e-31,2.5924076664835166e-31,2.5874126615384618e-31,2.582417656593407e-31,2.5774226516483516e-31,2.572427646703297e-31,2.567432641758242e-31,2.562437636813187e-31,2.557442631868132e-31,2.552447626923077e-31,2.547452621978022e-31,2.5424576170329674e-31,2.537462612087912e-31,2.5324676071428572e-31,2.5274726021978024e-31,2.5224775972527476e-31,2.5174825923076923e-31,2.5124875873626375e-31,2.5074925824175826e-31,2.502497577472528e-31,2.497502572527473e-31,2.4925075675824177e-31,2.487512562637363e-31,2.482517557692308e-31,2.477522552747253e-31,2.472527547802198e-31,2.467532542857143e-31,2.4625375379120882e-31,2.4575425329670334e-31,2.452547528021978e-31,2.4475525230769233e-31,2.4425575181318684e-31,2.4375625131868136e-31,2.4325675082417583e-31,2.4275725032967035e-31,2.4225774983516487e-31,2.417582493406594e-31,2.4125874884615385e-31,2.4075924835164837e-31,2.402597478571429e-31,2.397602473626374e-31,2.3926074686813188e-31,2.387612463736264e-31,2.382617458791209e-31,2.3776224538461543e-31,2.372627448901099e-31,2.367632443956044e-31,2.3626374390109893e-31,2.3576424340659345e-31,2.352647429120879e-31,2.3476524241758244e-31,2.3426574192307695e-31,2.3376624142857147e-31,2.3326674093406594e-31,2.3276724043956046e-31,2.3226773994505497e-31,2.317682394505495e-31,2.3126873895604396e-31,2.307692384615385e-31,2.30269737967033e-31,2.297702374725275e-31,2.29270736978022e-31,2.287712364835165e-31,2.28271735989011e-31,2.2777223549450553e-31,2.27272735e-31,2.2677323450549452e-31,2.2627373401098904e-31,2.2577423351648356e-31,2.2527473302197803e-31,2.2477523252747254e-31,2.2427573203296706e-31,2.2377623153846158e-31,2.2327673104395605e-31,2.2277723054945057e-31,2.222777300549451e-31,2.217782295604396e-31,2.2127872906593407e-31,2.207792285714286e-31,2.202797280769231e-31,2.197802275824176e-31,2.192807270879121e-31,2.187812265934066e-31,2.1828172609890113e-31,2.1778222560439564e-31,2.172827251098901e-31,2.1678322461538463e-31,2.1628372412087915e-31,2.1578422362637366e-31,2.1528472313186814e-31,2.1478522263736265e-31,2.1428572214285717e-31,2.137862216483517e-31,2.1328672115384616e-31,2.1278722065934067e-31,2.122877201648352e-31,2.117882196703297e-31,2.112887191758242e-31,2.107892186813187e-31,2.102897181868132e-31,2.0979021769230773e-31,2.092907171978022e-31,2.087912167032967e-31,2.0829171620879123e-31,2.0779221571428575e-31,2.0729271521978022e-31,2.0679321472527474e-31,2.0629371423076926e-31,2.0579421373626377e-31,2.0529471324175825e-31,2.0479521274725276e-31,2.0429571225274728e-31,2.037962117582418e-31,2.0329671126373627e-31,2.027972107692308e-31,2.022977102747253e-31,2.017982097802198e-31,2.012987092857143e-31,2.007992087912088e-31,2.002997082967033e-31,1.9980020780219784e-31,1.993007073076923e-31,1.9880120681318683e-31,1.9830170631868134e-31,1.9780220582417586e-31,1.9730270532967033e-31,1.9680320483516485e-31,1.9630370434065936e-31,1.9580420384615386e-31,1.9530470335164838e-31,1.9480520285714287e-31,1.9430570236263739e-31,1.9380620186813188e-31,1.933067013736264e-31,1.928072008791209e-31,1.923077003846154e-31,1.918081998901099e-31,1.9130869939560442e-31,1.9080919890109891e-31,1.9030969840659343e-31,1.8981019791208792e-31,1.8931069741758244e-31,1.8881119692307694e-31,1.8831169642857145e-31,1.8781219593406595e-31,1.8731269543956046e-31,1.8681319494505496e-31,1.8631369445054947e-31,1.8581419395604397e-31,1.8531469346153848e-31,1.8481519296703298e-31,1.843156924725275e-31,1.83816191978022e-31,1.833166914835165e-31,1.82817190989011e-31,1.8231769049450552e-31,1.8181819000000001e-31,1.8131868950549453e-31,1.8081918901098902e-31,1.8031968851648354e-31,1.7982018802197803e-31,1.7932068752747255e-31,1.7882118703296704e-31,1.7832168653846156e-31,1.7782218604395605e-31,1.7732268554945057e-31,1.7682318505494507e-31,1.7632368456043958e-31,1.7582418406593408e-31,1.753246835714286e-31,1.7482518307692309e-31,1.743256825824176e-31,1.738261820879121e-31,1.7332668159340661e-31,1.728271810989011e-31,1.7232768060439563e-31,1.7182818010989012e-31,1.7132867961538464e-31,1.7082917912087913e-31,1.7032967862637365e-31,1.6983017813186814e-31,1.6933067763736266e-31,1.6883117714285715e-31,1.6833167664835167e-31,1.6783217615384616e-31,1.6733267565934068e-31,1.6683317516483517e-31,1.663336746703297e-31,1.6583417417582418e-31,1.653346736813187e-31,1.648351731868132e-31,1.6433567269230771e-31,1.638361721978022e-31,1.6333667170329672e-31,1.6283717120879122e-31,1.6233767071428573e-31,1.6183817021978023e-31,1.6133866972527474e-31,1.6083916923076924e-31,1.6033966873626376e-31,1.5984016824175825e-31,1.5934066774725277e-31,1.5884116725274726e-31,1.5834166675824178e-31,1.5784216626373627e-31,1.5734266576923079e-31,1.5684316527472528e-31,1.563436647802198e-31,1.558441642857143e-31,1.553446637912088e-31,1.548451632967033e-31,1.5434566280219782e-31,1.5384616230769231e-31,1.5334666181318683e-31,1.5284716131868133e-31,1.5234766082417584e-31,1.5184816032967034e-31,1.5134865983516485e-31,1.5084915934065935e-31,1.5034965884615386e-31,1.4985015835164836e-31,1.4935065785714287e-31,1.4885115736263737e-31,1.4835165686813189e-31,1.4785215637362638e-31,1.473526558791209e-31,1.468531553846154e-31,1.463536548901099e-31,1.458541543956044e-31,1.4535465390109892e-31,1.4485515340659341e-31,1.4435565291208793e-31,1.4385615241758242e-31,1.4335665192307694e-31,1.4285715142857143e-31,1.4235765093406595e-31,1.4185815043956045e-31,1.4135864994505496e-31,1.4085914945054946e-31,1.4035964895604397e-31,1.3986014846153847e-31,1.3936064796703298e-31,1.3886114747252748e-31,1.38361646978022e-31,1.3786214648351649e-31,1.37362645989011e-31,1.368631454945055e-31,1.3636364500000002e-31,1.358641445054945e-31,1.3536464401098903e-31,1.3486514351648352e-31,1.3436564302197804e-31,1.3386614252747253e-31,1.3336664203296705e-31,1.3286714153846154e-31,1.3236764104395606e-31,1.3186814054945055e-31,1.3136864005494507e-31,1.3086913956043956e-31,1.3036963906593408e-31,1.2987013857142858e-31,1.293706380769231e-31,1.2887113758241759e-31,1.283716370879121e-31,1.278721365934066e-31,1.2737263609890111e-31,1.268731356043956e-31,1.2637363510989012e-31,1.2587413461538462e-31,1.2537463412087914e-31,1.2487513362637363e-31,1.2437563313186815e-31,1.2387613263736264e-31,1.2337663214285716e-31,1.2287713164835165e-31,1.2237763115384617e-31,1.2187813065934066e-31,1.2137863016483518e-31,1.2087912967032967e-31,1.203796291758242e-31,1.1988012868131868e-31,1.193806281868132e-31,1.188811276923077e-31,1.183816271978022e-31,1.178821267032967e-31,1.1738262620879122e-31,1.1688312571428572e-31,1.1638362521978023e-31,1.1588412472527473e-31,1.1538462423076924e-31,1.1488512373626374e-31,1.1438562324175825e-31,1.1388612274725275e-31,1.1338662225274727e-31,1.1288712175824176e-31,1.1238762126373628e-31,1.1188812076923077e-31,1.1138862027472529e-31,1.1088911978021978e-31,1.103896192857143e-31,1.098901187912088e-31,1.093906182967033e-31,1.088911178021978e-31,1.0839161730769232e-31,1.0789211681318681e-31,1.0739261631868133e-31,1.0689311582417582e-31,1.0639361532967034e-31,1.0589411483516484e-31,1.0539461434065935e-31,1.0489511384615385e-31,1.0439561335164836e-31,1.0389611285714286e-31,1.0339661236263737e-31,1.0289711186813187e-31,1.0239761137362638e-31,1.0189811087912088e-31,1.013986103846154e-31,1.008991098901099e-31,1.003996093956044e-31,9.99001089010989e-32,9.940060840659342e-32,9.890110791208791e-32,9.840160741758243e-32,9.790210692307693e-32,9.740260642857144e-32,9.690310593406594e-32,9.640360543956045e-32,9.590410494505496e-32,9.540460445054946e-32,9.490510395604397e-32,9.440560346153847e-32,9.390610296703298e-32,9.340660247252748e-32,9.290710197802199e-32,9.240760148351649e-32,9.1908100989011e-32,9.14086004945055e-32,9.090910000000001e-32,9.040959950549451e-32,8.991009901098902e-32,8.941059851648353e-32,8.891109802197803e-32,8.841159752747254e-32,8.791209703296704e-32,8.741259653846155e-32,8.691309604395605e-32,8.641359554945056e-32,8.591409505494506e-32,8.541459456043957e-32,8.491509406593407e-32,8.441559357142858e-32,8.391609307692309e-32,8.341659258241759e-32,8.29170920879121e-32,8.24175915934066e-32,8.191809109890111e-32,8.141859060439561e-32,8.091909010989012e-32,8.041958961538462e-32,7.992008912087913e-32,7.942058862637363e-32,7.892108813186814e-32,7.842158763736264e-32,7.792208714285715e-32,7.742258664835166e-32,7.692308615384616e-32,7.642358565934067e-32,7.592408516483517e-32,7.542458467032968e-32,7.492508417582418e-32,7.442558368131869e-32,7.392608318681319e-32,7.34265826923077e-32,7.29270821978022e-32,7.242758170329671e-32,7.192808120879122e-32,7.142858071428572e-32,7.092908021978023e-32,7.042957972527473e-32,6.993007923076924e-32,6.943057873626374e-32,6.893107824175825e-32,6.843157774725275e-32,6.793207725274726e-32,6.743257675824176e-32,6.693307626373627e-32,6.643357576923078e-32,6.593407527472528e-32,6.543457478021979e-32,6.493507428571429e-32,6.44355737912088e-32,6.39360732967033e-32,6.343657280219781e-32,6.293707230769231e-32,6.243757181318682e-32,6.193807131868132e-32,6.143857082417583e-32,6.093907032967033e-32,6.043956983516484e-32,5.994006934065935e-32,5.944056884615385e-32,5.894106835164836e-32,5.844156785714286e-32,5.794206736263737e-32,5.744256686813187e-32,5.694306637362638e-32,5.644356587912088e-32,5.594406538461539e-32,5.544456489010989e-32,5.49450643956044e-32,5.44455639010989e-32,5.394606340659341e-32,5.344656291208792e-32,5.294706241758242e-32,5.244756192307693e-32,5.194806142857143e-32,5.144856093406594e-32,5.094906043956044e-32,5.044955994505495e-32,4.995005945054945e-32,4.945055895604396e-32,4.8951058461538465e-32,4.845155796703297e-32,4.7952057472527476e-32,4.745255697802198e-32,4.6953056483516487e-32,4.645355598901099e-32,4.59540554945055e-32,4.5454555000000003e-32,4.495505450549451e-32,4.4455554010989014e-32,4.395605351648352e-32,4.3456553021978025e-32,4.295705252747253e-32,4.2457552032967035e-32,4.195805153846154e-32,4.1458551043956046e-32,4.095905054945055e-32,4.0459550054945057e-32,3.996004956043956e-32,3.946054906593407e-32,3.8961048571428573e-32,3.846154807692308e-32,3.7962047582417584e-32,3.746254708791209e-32,3.6963046593406595e-32,3.64635460989011e-32,3.5964045604395606e-32,3.546454510989011e-32,3.4965044615384617e-32,3.446554412087912e-32,3.396604362637363e-32,3.3466543131868133e-32,3.296704263736264e-32,3.2467542142857144e-32,3.196804164835165e-32,3.1468541153846155e-32,3.096904065934066e-32,3.0469540164835166e-32,2.997003967032967e-32,2.9470539175824176e-32,2.897103868131868e-32,2.8471538186813187e-32,2.797203769230769e-32,2.74725371978022e-32,2.6973036703296703e-32,2.647353620879121e-32,2.5974035714285714e-32,2.547453521978022e-32,2.4975034725274725e-32,2.4475534230769233e-32,2.397603373626374e-32,2.3476533241758244e-32,2.297703274725275e-32,2.2477532252747255e-32,2.197803175824176e-32,2.1478531263736266e-32,2.097903076923077e-32,2.0479530274725277e-32,1.9980029780219782e-32,1.9480529285714288e-32,1.8981028791208793e-32,1.8481528296703298e-32,1.7982027802197804e-32,1.748252730769231e-32,1.6983026813186815e-32,1.648352631868132e-32,1.5984025824175826e-32,1.548452532967033e-32,1.4985024835164836e-32,1.4485524340659342e-32,1.3986023846153847e-32,1.3486523351648353e-32,1.2987022857142858e-32,1.2487522362637364e-32,1.1988021868131869e-32,1.1488521373626374e-32,1.098902087912088e-32,1.0489520384615385e-32,9.99001989010989e-33,9.490519395604396e-33,8.991018901098901e-33,8.491518406593407e-33,7.992017912087912e-33,7.492517417582418e-33,6.993016923076923e-33,6.493516428571429e-33,5.994015934065935e-33,5.49451543956044e-33,4.9950149450549456e-33,4.495514450549451e-33,3.9960139560439564e-33,3.496513461538462e-33,2.9970129670329672e-33,2.4975124725274727e-33,1.998011978021978e-33,1.4985114835164837e-33,9.990109890109891e-34,4.995104945054945e-34,1.0e-38],"x":[1.0e-30,9.995004995054946e-31,9.99000999010989e-31,9.985014985164837e-31,9.980019980219781e-31,9.975024975274726e-31,9.970029970329671e-31,9.965034965384616e-31,9.960039960439562e-31,9.955044955494507e-31,9.950049950549452e-31,9.945054945604396e-31,9.940059940659341e-31,9.935064935714286e-31,9.930069930769232e-31,9.925074925824177e-31,9.920079920879122e-31,9.915084915934066e-31,9.910089910989011e-31,9.905094906043958e-31,9.900099901098902e-31,9.895104896153847e-31,9.890109891208792e-31,9.885114886263737e-31,9.880119881318683e-31,9.875124876373628e-31,9.870129871428572e-31,9.865134866483517e-31,9.860139861538462e-31,9.855144856593407e-31,9.850149851648353e-31,9.845154846703298e-31,9.840159841758243e-31,9.835164836813187e-31,9.830169831868132e-31,9.825174826923078e-31,9.820179821978023e-31,9.815184817032968e-31,9.810189812087913e-31,9.805194807142857e-31,9.800199802197804e-31,9.795204797252749e-31,9.790209792307693e-31,9.785214787362638e-31,9.780219782417583e-31,9.775224777472528e-31,9.770229772527474e-31,9.765234767582419e-31,9.760239762637363e-31,9.755244757692308e-31,9.750249752747253e-31,9.7452547478022e-31,9.740259742857144e-31,9.735264737912089e-31,9.730269732967034e-31,9.725274728021978e-31,9.720279723076925e-31,9.71528471813187e-31,9.710289713186814e-31,9.705294708241759e-31,9.700299703296704e-31,9.695304698351648e-31,9.690309693406595e-31,9.68531468846154e-31,9.680319683516484e-31,9.675324678571429e-31,9.670329673626374e-31,9.66533466868132e-31,9.660339663736265e-31,9.65534465879121e-31,9.650349653846154e-31,9.6453546489011e-31,9.640359643956046e-31,9.63536463901099e-31,9.630369634065935e-31,9.62537462912088e-31,9.620379624175825e-31,9.61538461923077e-31,9.610389614285716e-31,9.60539460934066e-31,9.600399604395605e-31,9.59540459945055e-31,9.590409594505495e-31,9.585414589560441e-31,9.580419584615386e-31,9.57542457967033e-31,9.570429574725275e-31,9.56543456978022e-31,9.560439564835166e-31,9.555444559890111e-31,9.550449554945056e-31,9.54545455e-31,9.540459545054945e-31,9.53546454010989e-31,9.530469535164837e-31,9.525474530219781e-31,9.520479525274726e-31,9.51548452032967e-31,9.510489515384615e-31,9.505494510439562e-31,9.500499505494507e-31,9.495504500549451e-31,9.490509495604396e-31,9.48551449065934e-31,9.480519485714287e-31,9.475524480769232e-31,9.470529475824177e-31,9.465534470879122e-31,9.460539465934066e-31,9.455544460989011e-31,9.450549456043957e-31,9.445554451098902e-31,9.440559446153847e-31,9.435564441208792e-31,9.430569436263736e-31,9.425574431318683e-31,9.420579426373628e-31,9.415584421428572e-31,9.410589416483517e-31,9.405594411538462e-31,9.400599406593408e-31,9.395604401648353e-31,9.390609396703298e-31,9.385614391758242e-31,9.380619386813187e-31,9.375624381868132e-31,9.370629376923078e-31,9.365634371978023e-31,9.360639367032968e-31,9.355644362087913e-31,9.350649357142857e-31,9.345654352197804e-31,9.340659347252748e-31,9.335664342307693e-31,9.330669337362638e-31,9.325674332417583e-31,9.320679327472529e-31,9.315684322527474e-31,9.310689317582419e-31,9.305694312637363e-31,9.300699307692308e-31,9.295704302747253e-31,9.2907092978022e-31,9.285714292857144e-31,9.280719287912089e-31,9.275724282967033e-31,9.270729278021978e-31,9.265734273076925e-31,9.26073926813187e-31,9.255744263186814e-31,9.250749258241759e-31,9.245754253296703e-31,9.24075924835165e-31,9.235764243406595e-31,9.23076923846154e-31,9.225774233516484e-31,9.220779228571429e-31,9.215784223626374e-31,9.21078921868132e-31,9.205794213736265e-31,9.20079920879121e-31,9.195804203846154e-31,9.190809198901099e-31,9.185814193956045e-31,9.18081918901099e-31,9.175824184065935e-31,9.17082917912088e-31,9.165834174175824e-31,9.16083916923077e-31,9.155844164285716e-31,9.15084915934066e-31,9.145854154395605e-31,9.14085914945055e-31,9.135864144505494e-31,9.130869139560441e-31,9.125874134615386e-31,9.12087912967033e-31,9.115884124725275e-31,9.11088911978022e-31,9.105894114835166e-31,9.100899109890111e-31,9.095904104945056e-31,9.0909091e-31,9.085914095054945e-31,9.080919090109892e-31,9.075924085164836e-31,9.070929080219781e-31,9.065934075274726e-31,9.06093907032967e-31,9.055944065384615e-31,9.050949060439562e-31,9.045954055494507e-31,9.040959050549451e-31,9.035964045604396e-31,9.03096904065934e-31,9.025974035714287e-31,9.020979030769232e-31,9.015984025824177e-31,9.010989020879121e-31,9.005994015934066e-31,9.000999010989013e-31,8.996004006043957e-31,8.991009001098902e-31,8.986013996153847e-31,8.981018991208791e-31,8.976023986263736e-31,8.971028981318683e-31,8.966033976373627e-31,8.961038971428572e-31,8.956043966483517e-31,8.951048961538462e-31,8.946053956593408e-31,8.941058951648353e-31,8.936063946703297e-31,8.931068941758242e-31,8.926073936813187e-31,8.921078931868133e-31,8.916083926923078e-31,8.911088921978023e-31,8.906093917032968e-31,8.901098912087912e-31,8.896103907142857e-31,8.891108902197804e-31,8.886113897252748e-31,8.881118892307693e-31,8.876123887362638e-31,8.871128882417582e-31,8.866133877472529e-31,8.861138872527474e-31,8.856143867582418e-31,8.851148862637363e-31,8.846153857692308e-31,8.841158852747254e-31,8.836163847802199e-31,8.831168842857144e-31,8.826173837912088e-31,8.821178832967033e-31,8.816183828021978e-31,8.811188823076924e-31,8.80619381813187e-31,8.801198813186814e-31,8.796203808241759e-31,8.791208803296703e-31,8.78621379835165e-31,8.781218793406595e-31,8.77622378846154e-31,8.771228783516484e-31,8.766233778571429e-31,8.761238773626375e-31,8.75624376868132e-31,8.751248763736265e-31,8.74625375879121e-31,8.741258753846154e-31,8.736263748901099e-31,8.731268743956045e-31,8.72627373901099e-31,8.721278734065935e-31,8.71628372912088e-31,8.711288724175824e-31,8.70629371923077e-31,8.701298714285715e-31,8.69630370934066e-31,8.691308704395605e-31,8.68631369945055e-31,8.681318694505496e-31,8.67632368956044e-31,8.671328684615385e-31,8.66633367967033e-31,8.661338674725275e-31,8.65634366978022e-31,8.651348664835166e-31,8.64635365989011e-31,8.641358654945056e-31,8.63636365e-31,8.631368645054945e-31,8.626373640109892e-31,8.621378635164836e-31,8.616383630219781e-31,8.611388625274726e-31,8.60639362032967e-31,8.601398615384617e-31,8.596403610439562e-31,8.591408605494506e-31,8.586413600549451e-31,8.581418595604396e-31,8.57642359065934e-31,8.571428585714287e-31,8.566433580769232e-31,8.561438575824176e-31,8.556443570879121e-31,8.551448565934066e-31,8.546453560989012e-31,8.541458556043957e-31,8.536463551098902e-31,8.531468546153847e-31,8.526473541208791e-31,8.521478536263738e-31,8.516483531318682e-31,8.511488526373627e-31,8.506493521428572e-31,8.501498516483517e-31,8.496503511538461e-31,8.491508506593408e-31,8.486513501648353e-31,8.481518496703297e-31,8.476523491758242e-31,8.471528486813187e-31,8.466533481868133e-31,8.461538476923078e-31,8.456543471978023e-31,8.451548467032967e-31,8.446553462087912e-31,8.441558457142859e-31,8.436563452197803e-31,8.431568447252748e-31,8.426573442307693e-31,8.421578437362638e-31,8.416583432417582e-31,8.411588427472529e-31,8.406593422527473e-31,8.401598417582418e-31,8.396603412637363e-31,8.391608407692308e-31,8.386613402747254e-31,8.381618397802199e-31,8.376623392857144e-31,8.371628387912088e-31,8.366633382967033e-31,8.36163837802198e-31,8.356643373076924e-31,8.351648368131869e-31,8.346653363186814e-31,8.341658358241758e-31,8.336663353296703e-31,8.33166834835165e-31,8.326673343406594e-31,8.321678338461539e-31,8.316683333516484e-31,8.311688328571429e-31,8.306693323626375e-31,8.30169831868132e-31,8.296703313736264e-31,8.29170830879121e-31,8.286713303846154e-31,8.2817182989011e-31,8.276723293956045e-31,8.27172828901099e-31,8.266733284065935e-31,8.26173827912088e-31,8.256743274175824e-31,8.25174826923077e-31,8.246753264285715e-31,8.24175825934066e-31,8.236763254395605e-31,8.23176824945055e-31,8.226773244505496e-31,8.22177823956044e-31,8.216783234615385e-31,8.21178822967033e-31,8.206793224725275e-31,8.201798219780221e-31,8.196803214835166e-31,8.19180820989011e-31,8.186813204945055e-31,8.1818182e-31,8.176823195054945e-31,8.171828190109891e-31,8.166833185164836e-31,8.16183818021978e-31,8.156843175274726e-31,8.15184817032967e-31,8.146853165384617e-31,8.141858160439561e-31,8.136863155494506e-31,8.131868150549451e-31,8.126873145604396e-31,8.121878140659342e-31,8.116883135714287e-31,8.111888130769232e-31,8.106893125824176e-31,8.101898120879121e-31,8.096903115934067e-31,8.091908110989012e-31,8.086913106043957e-31,8.081918101098902e-31,8.076923096153846e-31,8.071928091208791e-31,8.066933086263738e-31,8.061938081318682e-31,8.056943076373627e-31,8.051948071428572e-31,8.046953066483516e-31,8.041958061538463e-31,8.036963056593408e-31,8.031968051648352e-31,8.026973046703297e-31,8.021978041758242e-31,8.016983036813188e-31,8.011988031868133e-31,8.006993026923078e-31,8.001998021978023e-31,7.997003017032967e-31,7.992008012087912e-31,7.987013007142858e-31,7.982018002197803e-31,7.977022997252748e-31,7.972027992307693e-31,7.967032987362637e-31,7.962037982417584e-31,7.957042977472529e-31,7.952047972527473e-31,7.947052967582418e-31,7.942057962637363e-31,7.93706295769231e-31,7.932067952747254e-31,7.927072947802199e-31,7.922077942857143e-31,7.917082937912088e-31,7.912087932967033e-31,7.90709292802198e-31,7.902097923076924e-31,7.897102918131869e-31,7.892107913186814e-31,7.887112908241759e-31,7.882117903296704e-31,7.877122898351649e-31,7.872127893406594e-31,7.867132888461539e-31,7.8621378835164845e-31,7.857142878571429e-31,7.852147873626374e-31,7.8471528686813195e-31,7.842157863736264e-31,7.83716285879121e-31,7.832167853846155e-31,7.827172848901099e-31,7.822177843956045e-31,7.81718283901099e-31,7.812187834065934e-31,7.80719282912088e-31,7.802197824175825e-31,7.79720281923077e-31,7.792207814285715e-31,7.78721280934066e-31,7.782217804395605e-31,7.77722279945055e-31,7.772227794505495e-31,7.76723278956044e-31,7.762237784615385e-31,7.757242779670331e-31,7.7522477747252755e-31,7.74725276978022e-31,7.742257764835166e-31,7.7372627598901105e-31,7.732267754945055e-31,7.727272750000001e-31,7.722277745054946e-31,7.717282740109891e-31,7.712287735164836e-31,7.707292730219781e-31,7.702297725274726e-31,7.697302720329671e-31,7.692307715384616e-31,7.687312710439561e-31,7.682317705494506e-31,7.677322700549452e-31,7.672327695604396e-31,7.667332690659341e-31,7.662337685714287e-31,7.657342680769231e-31,7.652347675824176e-31,7.647352670879122e-31,7.642357665934066e-31,7.637362660989012e-31,7.632367656043957e-31,7.6273726510989015e-31,7.622377646153847e-31,7.617382641208792e-31,7.6123876362637365e-31,7.607392631318682e-31,7.602397626373627e-31,7.5974026214285725e-31,7.592407616483517e-31,7.587412611538462e-31,7.5824176065934075e-31,7.577422601648352e-31,7.572427596703297e-31,7.567432591758243e-31,7.562437586813187e-31,7.557442581868133e-31,7.552447576923078e-31,7.547452571978022e-31,7.542457567032968e-31,7.537462562087913e-31,7.532467557142857e-31,7.527472552197803e-31,7.522477547252748e-31,7.517482542307693e-31,7.512487537362638e-31,7.507492532417583e-31,7.502497527472528e-31,7.497502522527473e-31,7.492507517582418e-31,7.4875125126373634e-31,7.482517507692308e-31,7.477522502747254e-31,7.4725274978021985e-31,7.467532492857143e-31,7.462537487912089e-31,7.4575424829670335e-31,7.452547478021978e-31,7.447552473076924e-31,7.442557468131869e-31,7.437562463186814e-31,7.432567458241759e-31,7.427572453296704e-31,7.422577448351649e-31,7.417582443406594e-31,7.412587438461539e-31,7.407592433516484e-31,7.402597428571429e-31,7.397602423626375e-31,7.392607418681319e-31,7.387612413736264e-31,7.38261740879121e-31,7.377622403846154e-31,7.372627398901099e-31,7.367632393956045e-31,7.3626373890109895e-31,7.357642384065935e-31,7.35264737912088e-31,7.3476523741758245e-31,7.34265736923077e-31,7.337662364285715e-31,7.33266735934066e-31,7.327672354395605e-31,7.32267734945055e-31,7.3176823445054955e-31,7.31268733956044e-31,7.307692334615385e-31,7.3026973296703306e-31,7.297702324725275e-31,7.29270731978022e-31,7.287712314835166e-31,7.28271730989011e-31,7.277722304945056e-31,7.272727300000001e-31,7.267732295054945e-31,7.262737290109891e-31,7.257742285164836e-31,7.2527472802197804e-31,7.247752275274726e-31,7.242757270329671e-31,7.237762265384616e-31,7.232767260439561e-31,7.227772255494506e-31,7.222777250549451e-31,7.217782245604396e-31,7.212787240659341e-31,7.2077922357142865e-31,7.202797230769231e-31,7.197802225824177e-31,7.1928072208791215e-31,7.187812215934066e-31,7.182817210989012e-31,7.177822206043957e-31,7.172827201098901e-31,7.167832196153847e-31,7.162837191208792e-31,7.157842186263737e-31,7.152847181318682e-31,7.147852176373627e-31,7.142857171428572e-31,7.137862166483517e-31,7.132867161538462e-31,7.127872156593407e-31,7.122877151648352e-31,7.117882146703298e-31,7.112887141758242e-31,7.107892136813187e-31,7.102897131868133e-31,7.0979021269230775e-31,7.092907121978022e-31,7.087912117032968e-31,7.0829171120879125e-31,7.077922107142858e-31,7.072927102197803e-31,7.0679320972527476e-31,7.062937092307693e-31,7.057942087362638e-31,7.052947082417583e-31,7.047952077472528e-31,7.042957072527473e-31,7.0379620675824185e-31,7.032967062637363e-31,7.027972057692308e-31,7.022977052747254e-31,7.017982047802198e-31,7.012987042857143e-31,7.007992037912089e-31,7.002997032967033e-31,6.998002028021979e-31,6.993007023076924e-31,6.988012018131868e-31,6.983017013186814e-31,6.978022008241759e-31,6.9730270032967035e-31,6.968031998351649e-31,6.963036993406594e-31,6.958041988461539e-31,6.953046983516484e-31,6.948051978571429e-31,6.9430569736263745e-31,6.938061968681319e-31,6.933066963736264e-31,6.9280719587912095e-31,6.923076953846154e-31,6.9180819489011e-31,6.913086943956045e-31,6.908091939010989e-31,6.903096934065935e-31,6.89810192912088e-31,6.893106924175824e-31,6.88811191923077e-31,6.883116914285715e-31,6.87812190934066e-31,6.873126904395605e-31,6.86813189945055e-31,6.863136894505495e-31,6.85814188956044e-31,6.853146884615385e-31,6.84815187967033e-31,6.843156874725275e-31,6.838161869780221e-31,6.8331668648351654e-31,6.82817185989011e-31,6.823176854945056e-31,6.8181818500000005e-31,6.813186845054945e-31,6.808191840109891e-31,6.8031968351648355e-31,6.798201830219781e-31,6.793206825274726e-31,6.788211820329671e-31,6.783216815384616e-31,6.778221810439561e-31,6.773226805494506e-31,6.768231800549451e-31,6.763236795604396e-31,6.758241790659342e-31,6.753246785714286e-31,6.748251780769231e-31,6.743256775824177e-31,6.738261770879121e-31,6.733266765934066e-31,6.728271760989012e-31,6.723276756043956e-31,6.718281751098902e-31,6.713286746153847e-31,6.7082917412087915e-31,6.703296736263737e-31,6.698301731318682e-31,6.6933067263736265e-31,6.688311721428572e-31,6.683316716483517e-31,6.6783217115384624e-31,6.673326706593407e-31,6.668331701648352e-31,6.6633366967032975e-31,6.658341691758242e-31,6.653346686813187e-31,6.6483516818681326e-31,6.643356676923077e-31,6.638361671978023e-31,6.633366667032968e-31,6.628371662087912e-31,6.623376657142858e-31,6.618381652197803e-31,6.613386647252747e-31,6.608391642307693e-31,6.603396637362638e-31,6.598401632417583e-31,6.593406627472528e-31,6.588411622527473e-31,6.583416617582418e-31,6.578421612637363e-31,6.573426607692308e-31,6.568431602747253e-31,6.563436597802198e-31,6.558441592857144e-31,6.5534465879120885e-31,6.548451582967033e-31,6.543456578021979e-31,6.5384615730769235e-31,6.533466568131868e-31,6.528471563186814e-31,6.523476558241759e-31,6.518481553296704e-31,6.513486548351649e-31,6.508491543406594e-31,6.503496538461539e-31,6.498501533516484e-31,6.493506528571429e-31,6.488511523626374e-31,6.483516518681319e-31,6.478521513736265e-31,6.473526508791209e-31,6.468531503846154e-31,6.4635364989011e-31,6.458541493956044e-31,6.453546489010989e-31,6.448551484065935e-31,6.4435564791208795e-31,6.438561474175825e-31,6.43356646923077e-31,6.4285714642857145e-31,6.42357645934066e-31,6.418581454395605e-31,6.4135864494505496e-31,6.408591444505495e-31,6.40359643956044e-31,6.3986014346153855e-31,6.39360642967033e-31,6.388611424725275e-31,6.3836164197802205e-31,6.378621414835165e-31,6.37362640989011e-31,6.368631404945056e-31,6.3636364e-31,6.358641395054946e-31,6.353646390109891e-31,6.348651385164835e-31,6.343656380219781e-31,6.338661375274726e-31,6.33366637032967e-31,6.328671365384616e-31,6.323676360439561e-31,6.318681355494506e-31,6.313686350549451e-31,6.308691345604396e-31,6.303696340659341e-31,6.298701335714286e-31,6.293706330769231e-31,6.2887113258241765e-31,6.283716320879121e-31,6.278721315934067e-31,6.2737263109890115e-31,6.268731306043956e-31,6.263736301098902e-31,6.258741296153847e-31,6.253746291208791e-31,6.248751286263737e-31,6.243756281318682e-31,6.238761276373627e-31,6.233766271428572e-31,6.228771266483517e-31,6.223776261538462e-31,6.218781256593407e-31,6.213786251648353e-31,6.208791246703297e-31,6.203796241758242e-31,6.198801236813188e-31,6.193806231868132e-31,6.188811226923077e-31,6.183816221978023e-31,6.178821217032967e-31,6.173826212087913e-31,6.168831207142858e-31,6.1638362021978025e-31,6.158841197252748e-31,6.153846192307693e-31,6.1488511873626375e-31,6.143856182417583e-31,6.138861177472528e-31,6.1338661725274735e-31,6.128871167582418e-31,6.123876162637363e-31,6.1188811576923085e-31,6.113886152747253e-31,6.108891147802198e-31,6.103896142857144e-31,6.098901137912088e-31,6.093906132967034e-31,6.088911128021979e-31,6.083916123076923e-31,6.078921118131869e-31,6.073926113186814e-31,6.068931108241758e-31,6.063936103296704e-31,6.058941098351649e-31,6.053946093406594e-31,6.048951088461539e-31,6.043956083516484e-31,6.038961078571429e-31,6.033966073626374e-31,6.028971068681319e-31,6.0239760637362644e-31,6.018981058791209e-31,6.013986053846155e-31,6.0089910489010995e-31,6.003996043956044e-31,5.99900103901099e-31,5.9940060340659346e-31,5.989011029120879e-31,5.984016024175825e-31,5.97902101923077e-31,5.974026014285715e-31,5.96903100934066e-31,5.964036004395605e-31,5.95904099945055e-31,5.954045994505495e-31,5.94905098956044e-31,5.944055984615385e-31,5.93906097967033e-31,5.934065974725276e-31,5.92907096978022e-31,5.924075964835165e-31,5.919080959890111e-31,5.914085954945055e-31,5.90909095e-31,5.904095945054946e-31,5.8991009401098905e-31,5.894105935164836e-31,5.889110930219781e-31,5.8841159252747255e-31,5.879120920329671e-31,5.874125915384616e-31,5.869130910439561e-31,5.864135905494506e-31,5.859140900549451e-31,5.8541458956043965e-31,5.849150890659341e-31,5.844155885714286e-31,5.8391608807692316e-31,5.834165875824176e-31,5.829170870879121e-31,5.824175865934067e-31,5.819180860989011e-31,5.814185856043957e-31,5.809190851098902e-31,5.804195846153846e-31,5.799200841208792e-31,5.794205836263737e-31,5.7892108313186814e-31,5.784215826373627e-31,5.779220821428572e-31,5.774225816483517e-31,5.769230811538462e-31,5.764235806593407e-31,5.759240801648352e-31,5.754245796703297e-31,5.749250791758242e-31,5.7442557868131875e-31,5.739260781868132e-31,5.734265776923078e-31,5.7292707719780225e-31,5.724275767032967e-31,5.719280762087913e-31,5.714285757142858e-31,5.709290752197802e-31,5.704295747252748e-31,5.699300742307693e-31,5.694305737362638e-31,5.689310732417583e-31,5.684315727472528e-31,5.679320722527473e-31,5.674325717582418e-31,5.669330712637363e-31,5.664335707692308e-31,5.659340702747253e-31,5.654345697802199e-31,5.649350692857143e-31,5.644355687912088e-31,5.639360682967034e-31,5.6343656780219785e-31,5.629370673076923e-31,5.624375668131869e-31,5.6193806631868135e-31,5.614385658241759e-31,5.609390653296704e-31,5.604395648351649e-31,5.599400643406594e-31,5.594405638461539e-31,5.589410633516484e-31,5.584415628571429e-31,5.579420623626374e-31,5.5744256186813195e-31,5.569430613736264e-31,5.564435608791209e-31,5.559440603846155e-31,5.554445598901099e-31,5.549450593956044e-31,5.54445558901099e-31,5.539460584065934e-31,5.53446557912088e-31,5.529470574175825e-31,5.524475569230769e-31,5.519480564285715e-31,5.51448555934066e-31,5.5094905543956045e-31,5.50449554945055e-31,5.499500544505495e-31,5.49450553956044e-31,5.489510534615385e-31,5.48451552967033e-31,5.4795205247252755e-31,5.47452551978022e-31,5.469530514835165e-31,5.4645355098901105e-31,5.459540504945055e-31,5.454545500000001e-31,5.449550495054946e-31,5.44455549010989e-31,5.439560485164836e-31,5.434565480219781e-31,5.429570475274725e-31,5.424575470329671e-31,5.419580465384616e-31,5.414585460439561e-31,5.409590455494506e-31,5.404595450549451e-31,5.399600445604396e-31,5.394605440659341e-31,5.389610435714286e-31,5.384615430769231e-31,5.379620425824176e-31,5.374625420879122e-31,5.3696304159340664e-31,5.364635410989011e-31,5.359640406043957e-31,5.3546454010989015e-31,5.349650396153846e-31,5.344655391208792e-31,5.3396603862637365e-31,5.334665381318682e-31,5.329670376373627e-31,5.324675371428572e-31,5.319680366483517e-31,5.314685361538462e-31,5.309690356593407e-31,5.304695351648352e-31,5.299700346703297e-31,5.294705341758243e-31,5.289710336813187e-31,5.284715331868132e-31,5.279720326923078e-31,5.274725321978022e-31,5.269730317032967e-31,5.264735312087913e-31,5.259740307142857e-31,5.254745302197803e-31,5.249750297252748e-31,5.2447552923076925e-31,5.239760287362638e-31,5.234765282417583e-31,5.2297702774725275e-31,5.224775272527473e-31,5.219780267582418e-31,5.2147852626373634e-31,5.209790257692308e-31,5.204795252747253e-31,5.1998002478021985e-31,5.194805242857143e-31,5.189810237912088e-31,5.1848152329670336e-31,5.179820228021978e-31,5.174825223076924e-31,5.169830218131869e-31,5.164835213186813e-31,5.159840208241759e-31,5.154845203296704e-31,5.149850198351648e-31,5.144855193406594e-31,5.139860188461539e-31,5.134865183516484e-31,5.129870178571429e-31,5.124875173626374e-31,5.119880168681319e-31,5.114885163736264e-31,5.109890158791209e-31,5.104895153846154e-31,5.099900148901099e-31,5.094905143956045e-31,5.0899101390109895e-31,5.084915134065934e-31,5.07992012912088e-31,5.0749251241758245e-31,5.069930119230769e-31,5.064935114285715e-31,5.05994010934066e-31,5.054945104395605e-31,5.04995009945055e-31,5.044955094505495e-31,5.03996008956044e-31,5.034965084615385e-31,5.02997007967033e-31,5.024975074725275e-31,5.01998006978022e-31,5.014985064835166e-31,5.00999005989011e-31,5.004995054945055e-31,5.000000050000001e-31,4.995005045054945e-31,4.99001004010989e-31,4.985015035164836e-31,4.9800200302197805e-31,4.975025025274726e-31,4.970030020329671e-31,4.9650350153846155e-31,4.960040010439561e-31,4.955045005494506e-31,4.9500500005494506e-31,4.945054995604396e-31,4.940059990659341e-31,4.9350649857142865e-31,4.930069980769231e-31,4.925074975824176e-31,4.9200799708791215e-31,4.915084965934066e-31,4.910089960989011e-31,4.905094956043957e-31,4.900099951098901e-31,4.895104946153847e-31,4.890109941208792e-31,4.885114936263736e-31,4.880119931318682e-31,4.875124926373627e-31,4.870129921428571e-31,4.865134916483517e-31,4.860139911538462e-31,4.855144906593407e-31,4.850149901648352e-31,4.845154896703297e-31,4.840159891758242e-31,4.835164886813187e-31,4.830169881868132e-31,4.8251748769230775e-31,4.820179871978022e-31,4.815184867032968e-31,4.8101898620879125e-31,4.805194857142857e-31,4.800199852197803e-31,4.795204847252748e-31,4.790209842307692e-31,4.785214837362638e-31,4.780219832417583e-31,4.775224827472528e-31,4.770229822527473e-31,4.765234817582418e-31,4.760239812637363e-31,4.755244807692308e-31,4.750249802747253e-31,4.745254797802198e-31,4.740259792857143e-31,4.735264787912089e-31,4.730269782967033e-31,4.725274778021978e-31,4.720279773076924e-31,4.715284768131868e-31,4.710289763186813e-31,4.705294758241759e-31,4.7002997532967035e-31,4.695304748351649e-31,4.690309743406594e-31,4.6853147384615385e-31,4.680319733516484e-31,4.675324728571429e-31,4.670329723626374e-31,4.665334718681319e-31,4.660339713736264e-31,4.6553447087912095e-31,4.650349703846154e-31,4.645354698901099e-31,4.640359693956045e-31,4.635364689010989e-31,4.630369684065934e-31,4.62537467912088e-31,4.620379674175824e-31,4.61538466923077e-31,4.610389664285715e-31,4.605394659340659e-31,4.600399654395605e-31,4.59540464945055e-31,4.5904096445054945e-31,4.58541463956044e-31,4.580419634615385e-31,4.57542462967033e-31,4.570429624725275e-31,4.56543461978022e-31,4.5604396148351654e-31,4.55544460989011e-31,4.550449604945055e-31,4.5454546000000005e-31,4.540459595054945e-31,4.535464590109891e-31,4.5304695851648356e-31,4.52547458021978e-31,4.520479575274726e-31,4.515484570329671e-31,4.510489565384615e-31,4.505494560439561e-31,4.500499555494506e-31,4.495504550549451e-31,4.490509545604396e-31,4.485514540659341e-31,4.480519535714286e-31,4.475524530769231e-31,4.470529525824176e-31,4.465534520879121e-31,4.460539515934066e-31,4.455544510989012e-31,4.450549506043956e-31,4.445554501098901e-31,4.440559496153847e-31,4.4355644912087915e-31,4.430569486263736e-31,4.425574481318682e-31,4.4205794763736265e-31,4.415584471428572e-31,4.410589466483517e-31,4.405594461538462e-31,4.400599456593407e-31,4.395604451648352e-31,4.390609446703297e-31,4.385614441758242e-31,4.380619436813187e-31,4.3756244318681326e-31,4.370629426923077e-31,4.365634421978022e-31,4.360639417032968e-31,4.355644412087912e-31,4.350649407142858e-31,4.345654402197803e-31,4.340659397252747e-31,4.335664392307693e-31,4.330669387362638e-31,4.3256743824175824e-31,4.320679377472528e-31,4.315684372527473e-31,4.310689367582418e-31,4.305694362637363e-31,4.300699357692308e-31,4.295704352747253e-31,4.290709347802198e-31,4.285714342857143e-31,4.2807193379120885e-31,4.275724332967033e-31,4.270729328021979e-31,4.2657343230769235e-31,4.260739318131868e-31,4.255744313186814e-31,4.250749308241759e-31,4.245754303296703e-31,4.240759298351649e-31,4.235764293406594e-31,4.230769288461539e-31,4.225774283516484e-31,4.220779278571429e-31,4.215784273626374e-31,4.210789268681319e-31,4.205794263736264e-31,4.200799258791209e-31,4.195804253846154e-31,4.1908092489011e-31,4.185814243956044e-31,4.180819239010989e-31,4.175824234065935e-31,4.1708292291208795e-31,4.165834224175824e-31,4.16083921923077e-31,4.1558442142857145e-31,4.15084920934066e-31,4.145854204395605e-31,4.14085919945055e-31,4.135864194505495e-31,4.13086918956044e-31,4.125874184615385e-31,4.12087917967033e-31,4.115884174725275e-31,4.1108891697802205e-31,4.105894164835165e-31,4.10089915989011e-31,4.095904154945056e-31,4.09090915e-31,4.085914145054945e-31,4.080919140109891e-31,4.075924135164835e-31,4.070929130219781e-31,4.065934125274726e-31,4.06093912032967e-31,4.055944115384616e-31,4.050949110439561e-31,4.0459541054945055e-31,4.040959100549451e-31,4.035964095604396e-31,4.030969090659341e-31,4.025974085714286e-31,4.020979080769231e-31,4.0159840758241765e-31,4.010989070879121e-31,4.005994065934066e-31,4.0009990609890115e-31,3.996004056043956e-31,3.991009051098902e-31,3.986014046153847e-31,3.981019041208791e-31,3.976024036263737e-31,3.971029031318682e-31,3.966034026373626e-31,3.961039021428572e-31,3.956044016483517e-31,3.951049011538462e-31,3.946054006593407e-31,3.941059001648352e-31,3.936063996703297e-31,3.931068991758242e-31,3.9260739868131872e-31,3.9210789818681324e-31,3.916083976923077e-31,3.9110889719780223e-31,3.9060939670329674e-31,3.9010989620879126e-31,3.8961039571428573e-31,3.8911089521978025e-31,3.8861139472527477e-31,3.881118942307693e-31,3.8761239373626375e-31,3.8711289324175827e-31,3.866133927472528e-31,3.861138922527473e-31,3.8561439175824178e-31,3.851148912637363e-31,3.846153907692308e-31,3.8411589027472533e-31,3.836163897802198e-31,3.831168892857143e-31,3.8261738879120883e-31,3.8211788829670335e-31,3.816183878021978e-31,3.8111888730769234e-31,3.8061938681318685e-31,3.8011988631868137e-31,3.7962038582417584e-31,3.7912088532967036e-31,3.7862138483516487e-31,3.781218843406594e-31,3.7762238384615386e-31,3.771228833516484e-31,3.766233828571429e-31,3.761238823626374e-31,3.756243818681319e-31,3.751248813736264e-31,3.746253808791209e-31,3.7412588038461543e-31,3.736263798901099e-31,3.7312687939560442e-31,3.7262737890109894e-31,3.7212787840659346e-31,3.7162837791208793e-31,3.7112887741758244e-31,3.7062937692307696e-31,3.7012987642857148e-31,3.6963037593406595e-31,3.6913087543956047e-31,3.68631374945055e-31,3.681318744505495e-31,3.6763237395604397e-31,3.671328734615385e-31,3.66633372967033e-31,3.661338724725275e-31,3.65634371978022e-31,3.651348714835165e-31,3.6463537098901103e-31,3.6413587049450554e-31,3.6363637e-31,3.6313686950549453e-31,3.6263736901098905e-31,3.6213786851648356e-31,3.6163836802197804e-31,3.6113886752747255e-31,3.6063936703296707e-31,3.601398665384616e-31,3.5964036604395606e-31,3.5914086554945057e-31,3.586413650549451e-31,3.581418645604396e-31,3.576423640659341e-31,3.571428635714286e-31,3.566433630769231e-31,3.5614386258241763e-31,3.556443620879121e-31,3.551448615934066e-31,3.5464536109890113e-31,3.5414586060439565e-31,3.5364636010989012e-31,3.5314685961538464e-31,3.5264735912087916e-31,3.5214785862637367e-31,3.5164835813186815e-31,3.5114885763736266e-31,3.5064935714285718e-31,3.501498566483517e-31,3.4965035615384617e-31,3.491508556593407e-31,3.486513551648352e-31,3.481518546703297e-31,3.476523541758242e-31,3.471528536813187e-31,3.466533531868132e-31,3.4615385269230774e-31,3.456543521978022e-31,3.4515485170329673e-31,3.4465535120879124e-31,3.4415585071428576e-31,3.4365635021978023e-31,3.4315684972527475e-31,3.4265734923076926e-31,3.421578487362638e-31,3.4165834824175825e-31,3.4115884774725277e-31,3.406593472527473e-31,3.401598467582418e-31,3.3966034626373628e-31,3.391608457692308e-31,3.386613452747253e-31,3.3816184478021982e-31,3.376623442857143e-31,3.371628437912088e-31,3.3666334329670333e-31,3.3616384280219785e-31,3.356643423076923e-31,3.3516484181318684e-31,3.3466534131868135e-31,3.3416584082417587e-31,3.3366634032967034e-31,3.3316683983516486e-31,3.3266733934065937e-31,3.321678388461539e-31,3.3166833835164836e-31,3.311688378571429e-31,3.306693373626374e-31,3.301698368681319e-31,3.296703363736264e-31,3.291708358791209e-31,3.286713353846154e-31,3.2817183489010993e-31,3.276723343956044e-31,3.2717283390109892e-31,3.2667333340659344e-31,3.2617383291208795e-31,3.2567433241758243e-31,3.2517483192307694e-31,3.2467533142857146e-31,3.2417583093406598e-31,3.2367633043956045e-31,3.2317682994505497e-31,3.226773294505495e-31,3.22177828956044e-31,3.2167832846153847e-31,3.21178827967033e-31,3.206793274725275e-31,3.20179826978022e-31,3.196803264835165e-31,3.19180825989011e-31,3.1868132549450553e-31,3.1818182500000004e-31,3.176823245054945e-31,3.1718282401098903e-31,3.1668332351648355e-31,3.1618382302197806e-31,3.1568432252747254e-31,3.1518482203296705e-31,3.1468532153846157e-31,3.141858210439561e-31,3.1368632054945056e-31,3.1318682005494507e-31,3.126873195604396e-31,3.121878190659341e-31,3.116883185714286e-31,3.111888180769231e-31,3.106893175824176e-31,3.1018981708791213e-31,3.096903165934066e-31,3.091908160989011e-31,3.0869131560439563e-31,3.0819181510989015e-31,3.0769231461538462e-31,3.0719281412087914e-31,3.0669331362637366e-31,3.0619381313186817e-31,3.0569431263736264e-31,3.0519481214285716e-31,3.0469531164835168e-31,3.041958111538462e-31,3.0369631065934067e-31,3.031968101648352e-31,3.026973096703297e-31,3.021978091758242e-31,3.016983086813187e-31,3.011988081868132e-31,3.006993076923077e-31,3.0019980719780224e-31,2.997003067032967e-31,2.9920080620879123e-31,2.9870130571428574e-31,2.9820180521978026e-31,2.9770230472527473e-31,2.9720280423076925e-31,2.9670330373626376e-31,2.962038032417583e-31,2.9570430274725275e-31,2.9520480225274727e-31,2.947053017582418e-31,2.942058012637363e-31,2.9370630076923077e-31,2.932068002747253e-31,2.927072997802198e-31,2.9220779928571432e-31,2.917082987912088e-31,2.912087982967033e-31,2.9070929780219783e-31,2.9020979730769235e-31,2.897102968131868e-31,2.8921079631868133e-31,2.8871129582417585e-31,2.8821179532967037e-31,2.8771229483516484e-31,2.8721279434065936e-31,2.8671329384615387e-31,2.862137933516484e-31,2.8571429285714286e-31,2.8521479236263738e-31,2.847152918681319e-31,2.842157913736264e-31,2.837162908791209e-31,2.832167903846154e-31,2.827172898901099e-31,2.8221778939560443e-31,2.817182889010989e-31,2.812187884065934e-31,2.8071928791208794e-31,2.8021978741758245e-31,2.7972028692307693e-31,2.7922078642857144e-31,2.7872128593406596e-31,2.7822178543956048e-31,2.7772228494505495e-31,2.7722278445054946e-31,2.76723283956044e-31,2.762237834615385e-31,2.7572428296703297e-31,2.752247824725275e-31,2.74725281978022e-31,2.742257814835165e-31,2.73726280989011e-31,2.732267804945055e-31,2.7272728000000002e-31,2.7222777950549454e-31,2.71728279010989e-31,2.7122877851648353e-31,2.7072927802197805e-31,2.7022977752747256e-31,2.6973027703296703e-31,2.6923077653846155e-31,2.6873127604395607e-31,2.682317755494506e-31,2.6773227505494506e-31,2.6723277456043957e-31,2.667332740659341e-31,2.662337735714286e-31,2.6573427307692308e-31,2.652347725824176e-31,2.647352720879121e-31,2.6423577159340663e-31,2.637362710989011e-31,2.632367706043956e-31,2.6273727010989013e-31,2.6223776961538465e-31,2.617382691208791e-31,2.6123876862637364e-31,2.6073926813186815e-31,2.6023976763736267e-31,2.5974026714285714e-31,2.5924076664835166e-31,2.5874126615384618e-31,2.582417656593407e-31,2.5774226516483516e-31,2.572427646703297e-31,2.567432641758242e-31,2.562437636813187e-31,2.557442631868132e-31,2.552447626923077e-31,2.547452621978022e-31,2.5424576170329674e-31,2.537462612087912e-31,2.5324676071428572e-31,2.5274726021978024e-31,2.5224775972527476e-31,2.5174825923076923e-31,2.5124875873626375e-31,2.5074925824175826e-31,2.502497577472528e-31,2.497502572527473e-31,2.4925075675824177e-31,2.487512562637363e-31,2.482517557692308e-31,2.477522552747253e-31,2.472527547802198e-31,2.467532542857143e-31,2.4625375379120882e-31,2.4575425329670334e-31,2.452547528021978e-31,2.4475525230769233e-31,2.4425575181318684e-31,2.4375625131868136e-31,2.4325675082417583e-31,2.4275725032967035e-31,2.4225774983516487e-31,2.417582493406594e-31,2.4125874884615385e-31,2.4075924835164837e-31,2.402597478571429e-31,2.397602473626374e-31,2.3926074686813188e-31,2.387612463736264e-31,2.382617458791209e-31,2.3776224538461543e-31,2.372627448901099e-31,2.367632443956044e-31,2.3626374390109893e-31,2.3576424340659345e-31,2.352647429120879e-31,2.3476524241758244e-31,2.3426574192307695e-31,2.3376624142857147e-31,2.3326674093406594e-31,2.3276724043956046e-31,2.3226773994505497e-31,2.317682394505495e-31,2.3126873895604396e-31,2.307692384615385e-31,2.30269737967033e-31,2.297702374725275e-31,2.29270736978022e-31,2.287712364835165e-31,2.28271735989011e-31,2.2777223549450553e-31,2.27272735e-31,2.2677323450549452e-31,2.2627373401098904e-31,2.2577423351648356e-31,2.2527473302197803e-31,2.2477523252747254e-31,2.2427573203296706e-31,2.2377623153846158e-31,2.2327673104395605e-31,2.2277723054945057e-31,2.222777300549451e-31,2.217782295604396e-31,2.2127872906593407e-31,2.207792285714286e-31,2.202797280769231e-31,2.197802275824176e-31,2.192807270879121e-31,2.187812265934066e-31,2.1828172609890113e-31,2.1778222560439564e-31,2.172827251098901e-31,2.1678322461538463e-31,2.1628372412087915e-31,2.1578422362637366e-31,2.1528472313186814e-31,2.1478522263736265e-31,2.1428572214285717e-31,2.137862216483517e-31,2.1328672115384616e-31,2.1278722065934067e-31,2.122877201648352e-31,2.117882196703297e-31,2.112887191758242e-31,2.107892186813187e-31,2.102897181868132e-31,2.0979021769230773e-31,2.092907171978022e-31,2.087912167032967e-31,2.0829171620879123e-31,2.0779221571428575e-31,2.0729271521978022e-31,2.0679321472527474e-31,2.0629371423076926e-31,2.0579421373626377e-31,2.0529471324175825e-31,2.0479521274725276e-31,2.0429571225274728e-31,2.037962117582418e-31,2.0329671126373627e-31,2.027972107692308e-31,2.022977102747253e-31,2.017982097802198e-31,2.012987092857143e-31,2.007992087912088e-31,2.002997082967033e-31,1.9980020780219784e-31,1.993007073076923e-31,1.9880120681318683e-31,1.9830170631868134e-31,1.9780220582417586e-31,1.9730270532967033e-31,1.9680320483516485e-31,1.9630370434065936e-31,1.9580420384615386e-31,1.9530470335164838e-31,1.9480520285714287e-31,1.9430570236263739e-31,1.9380620186813188e-31,1.933067013736264e-31,1.928072008791209e-31,1.923077003846154e-31,1.918081998901099e-31,1.9130869939560442e-31,1.9080919890109891e-31,1.9030969840659343e-31,1.8981019791208792e-31,1.8931069741758244e-31,1.8881119692307694e-31,1.8831169642857145e-31,1.8781219593406595e-31,1.8731269543956046e-31,1.8681319494505496e-31,1.8631369445054947e-31,1.8581419395604397e-31,1.8531469346153848e-31,1.8481519296703298e-31,1.843156924725275e-31,1.83816191978022e-31,1.833166914835165e-31,1.82817190989011e-31,1.8231769049450552e-31,1.8181819000000001e-31,1.8131868950549453e-31,1.8081918901098902e-31,1.8031968851648354e-31,1.7982018802197803e-31,1.7932068752747255e-31,1.7882118703296704e-31,1.7832168653846156e-31,1.7782218604395605e-31,1.7732268554945057e-31,1.7682318505494507e-31,1.7632368456043958e-31,1.7582418406593408e-31,1.753246835714286e-31,1.7482518307692309e-31,1.743256825824176e-31,1.738261820879121e-31,1.7332668159340661e-31,1.728271810989011e-31,1.7232768060439563e-31,1.7182818010989012e-31,1.7132867961538464e-31,1.7082917912087913e-31,1.7032967862637365e-31,1.6983017813186814e-31,1.6933067763736266e-31,1.6883117714285715e-31,1.6833167664835167e-31,1.6783217615384616e-31,1.6733267565934068e-31,1.6683317516483517e-31,1.663336746703297e-31,1.6583417417582418e-31,1.653346736813187e-31,1.648351731868132e-31,1.6433567269230771e-31,1.638361721978022e-31,1.6333667170329672e-31,1.6283717120879122e-31,1.6233767071428573e-31,1.6183817021978023e-31,1.6133866972527474e-31,1.6083916923076924e-31,1.6033966873626376e-31,1.5984016824175825e-31,1.5934066774725277e-31,1.5884116725274726e-31,1.5834166675824178e-31,1.5784216626373627e-31,1.5734266576923079e-31,1.5684316527472528e-31,1.563436647802198e-31,1.558441642857143e-31,1.553446637912088e-31,1.548451632967033e-31,1.5434566280219782e-31,1.5384616230769231e-31,1.5334666181318683e-31,1.5284716131868133e-31,1.5234766082417584e-31,1.5184816032967034e-31,1.5134865983516485e-31,1.5084915934065935e-31,1.5034965884615386e-31,1.4985015835164836e-31,1.4935065785714287e-31,1.4885115736263737e-31,1.4835165686813189e-31,1.4785215637362638e-31,1.473526558791209e-31,1.468531553846154e-31,1.463536548901099e-31,1.458541543956044e-31,1.4535465390109892e-31,1.4485515340659341e-31,1.4435565291208793e-31,1.4385615241758242e-31,1.4335665192307694e-31,1.4285715142857143e-31,1.4235765093406595e-31,1.4185815043956045e-31,1.4135864994505496e-31,1.4085914945054946e-31,1.4035964895604397e-31,1.3986014846153847e-31,1.3936064796703298e-31,1.3886114747252748e-31,1.38361646978022e-31,1.3786214648351649e-31,1.37362645989011e-31,1.368631454945055e-31,1.3636364500000002e-31,1.358641445054945e-31,1.3536464401098903e-31,1.3486514351648352e-31,1.3436564302197804e-31,1.3386614252747253e-31,1.3336664203296705e-31,1.3286714153846154e-31,1.3236764104395606e-31,1.3186814054945055e-31,1.3136864005494507e-31,1.3086913956043956e-31,1.3036963906593408e-31,1.2987013857142858e-31,1.293706380769231e-31,1.2887113758241759e-31,1.283716370879121e-31,1.278721365934066e-31,1.2737263609890111e-31,1.268731356043956e-31,1.2637363510989012e-31,1.2587413461538462e-31,1.2537463412087914e-31,1.2487513362637363e-31,1.2437563313186815e-31,1.2387613263736264e-31,1.2337663214285716e-31,1.2287713164835165e-31,1.2237763115384617e-31,1.2187813065934066e-31,1.2137863016483518e-31,1.2087912967032967e-31,1.203796291758242e-31,1.1988012868131868e-31,1.193806281868132e-31,1.188811276923077e-31,1.183816271978022e-31,1.178821267032967e-31,1.1738262620879122e-31,1.1688312571428572e-31,1.1638362521978023e-31,1.1588412472527473e-31,1.1538462423076924e-31,1.1488512373626374e-31,1.1438562324175825e-31,1.1388612274725275e-31,1.1338662225274727e-31,1.1288712175824176e-31,1.1238762126373628e-31,1.1188812076923077e-31,1.1138862027472529e-31,1.1088911978021978e-31,1.103896192857143e-31,1.098901187912088e-31,1.093906182967033e-31,1.088911178021978e-31,1.0839161730769232e-31,1.0789211681318681e-31,1.0739261631868133e-31,1.0689311582417582e-31,1.0639361532967034e-31,1.0589411483516484e-31,1.0539461434065935e-31,1.0489511384615385e-31,1.0439561335164836e-31,1.0389611285714286e-31,1.0339661236263737e-31,1.0289711186813187e-31,1.0239761137362638e-31,1.0189811087912088e-31,1.013986103846154e-31,1.008991098901099e-31,1.003996093956044e-31,9.99001089010989e-32,9.940060840659342e-32,9.890110791208791e-32,9.840160741758243e-32,9.790210692307693e-32,9.740260642857144e-32,9.690310593406594e-32,9.640360543956045e-32,9.590410494505496e-32,9.540460445054946e-32,9.490510395604397e-32,9.440560346153847e-32,9.390610296703298e-32,9.340660247252748e-32,9.290710197802199e-32,9.240760148351649e-32,9.1908100989011e-32,9.14086004945055e-32,9.090910000000001e-32,9.040959950549451e-32,8.991009901098902e-32,8.941059851648353e-32,8.891109802197803e-32,8.841159752747254e-32,8.791209703296704e-32,8.741259653846155e-32,8.691309604395605e-32,8.641359554945056e-32,8.591409505494506e-32,8.541459456043957e-32,8.491509406593407e-32,8.441559357142858e-32,8.391609307692309e-32,8.341659258241759e-32,8.29170920879121e-32,8.24175915934066e-32,8.191809109890111e-32,8.141859060439561e-32,8.091909010989012e-32,8.041958961538462e-32,7.992008912087913e-32,7.942058862637363e-32,7.892108813186814e-32,7.842158763736264e-32,7.792208714285715e-32,7.742258664835166e-32,7.692308615384616e-32,7.642358565934067e-32,7.592408516483517e-32,7.542458467032968e-32,7.492508417582418e-32,7.442558368131869e-32,7.392608318681319e-32,7.34265826923077e-32,7.29270821978022e-32,7.242758170329671e-32,7.192808120879122e-32,7.142858071428572e-32,7.092908021978023e-32,7.042957972527473e-32,6.993007923076924e-32,6.943057873626374e-32,6.893107824175825e-32,6.843157774725275e-32,6.793207725274726e-32,6.743257675824176e-32,6.693307626373627e-32,6.643357576923078e-32,6.593407527472528e-32,6.543457478021979e-32,6.493507428571429e-32,6.44355737912088e-32,6.39360732967033e-32,6.343657280219781e-32,6.293707230769231e-32,6.243757181318682e-32,6.193807131868132e-32,6.143857082417583e-32,6.093907032967033e-32,6.043956983516484e-32,5.994006934065935e-32,5.944056884615385e-32,5.894106835164836e-32,5.844156785714286e-32,5.794206736263737e-32,5.744256686813187e-32,5.694306637362638e-32,5.644356587912088e-32,5.594406538461539e-32,5.544456489010989e-32,5.49450643956044e-32,5.44455639010989e-32,5.394606340659341e-32,5.344656291208792e-32,5.294706241758242e-32,5.244756192307693e-32,5.194806142857143e-32,5.144856093406594e-32,5.094906043956044e-32,5.044955994505495e-32,4.995005945054945e-32,4.945055895604396e-32,4.8951058461538465e-32,4.845155796703297e-32,4.7952057472527476e-32,4.745255697802198e-32,4.6953056483516487e-32,4.645355598901099e-32,4.59540554945055e-32,4.5454555000000003e-32,4.495505450549451e-32,4.4455554010989014e-32,4.395605351648352e-32,4.3456553021978025e-32,4.295705252747253e-32,4.2457552032967035e-32,4.195805153846154e-32,4.1458551043956046e-32,4.095905054945055e-32,4.0459550054945057e-32,3.996004956043956e-32,3.946054906593407e-32,3.8961048571428573e-32,3.846154807692308e-32,3.7962047582417584e-32,3.746254708791209e-32,3.6963046593406595e-32,3.64635460989011e-32,3.5964045604395606e-32,3.546454510989011e-32,3.4965044615384617e-32,3.446554412087912e-32,3.396604362637363e-32,3.3466543131868133e-32,3.296704263736264e-32,3.2467542142857144e-32,3.196804164835165e-32,3.1468541153846155e-32,3.096904065934066e-32,3.0469540164835166e-32,2.997003967032967e-32,2.9470539175824176e-32,2.897103868131868e-32,2.8471538186813187e-32,2.797203769230769e-32,2.74725371978022e-32,2.6973036703296703e-32,2.647353620879121e-32,2.5974035714285714e-32,2.547453521978022e-32,2.4975034725274725e-32,2.4475534230769233e-32,2.397603373626374e-32,2.3476533241758244e-32,2.297703274725275e-32,2.2477532252747255e-32,2.197803175824176e-32,2.1478531263736266e-32,2.097903076923077e-32,2.0479530274725277e-32,1.9980029780219782e-32,1.9480529285714288e-32,1.8981028791208793e-32,1.8481528296703298e-32,1.7982027802197804e-32,1.748252730769231e-32,1.6983026813186815e-32,1.648352631868132e-32,1.5984025824175826e-32,1.548452532967033e-32,1.4985024835164836e-32,1.4485524340659342e-32,1.3986023846153847e-32,1.3486523351648353e-32,1.2987022857142858e-32,1.2487522362637364e-32,1.1988021868131869e-32,1.1488521373626374e-32,1.098902087912088e-32,1.0489520384615385e-32,9.99001989010989e-33,9.490519395604396e-33,8.991018901098901e-33,8.491518406593407e-33,7.992017912087912e-33,7.492517417582418e-33,6.993016923076923e-33,6.493516428571429e-33,5.994015934065935e-33,5.49451543956044e-33,4.9950149450549456e-33,4.495514450549451e-33,3.9960139560439564e-33,3.496513461538462e-33,2.9970129670329672e-33,2.4975124725274727e-33,1.998011978021978e-33,1.4985114835164837e-33,9.990109890109891e-34,4.995104945054945e-34,1.0e-38]} \ No newline at end of file diff --git a/lib/node_modules/@stdlib/math/base/special/asinf/test/test.js b/lib/node_modules/@stdlib/math/base/special/asinf/test/test.js new file mode 100644 index 000000000000..79e14b33d7bb --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/asinf/test/test.js @@ -0,0 +1,151 @@ +/** +* @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( '@stdlib/math/base/assert/is-nanf' ); +var EPS = require( '@stdlib/constants/float32/eps' ); +var uniform = require( '@stdlib/random/base/uniform' ); +var abs = require( '@stdlib/math/base/special/abs' ); +var float64ToFloat32 = require( '@stdlib/number/float64/base/to-float32' ); +var asinf = require( './../lib' ); + + +// FIXTURES // + +var data = require( './fixtures/julia/data.json' ); +var smallNegative = require( './fixtures/julia/small_negative.json' ); +var smallPositive = require( './fixtures/julia/small_positive.json' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof asinf, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function computes the arcsine', function test( t ) { + var expected; + var delta; + var tol; + var x; + var y; + var i; + var e; + + x = data.x; + expected = data.expected; + + for ( i = 0; i < x.length; i++ ) { + y = asinf( ( ( x[ i ] ) ) ); + e = float64ToFloat32( expected[ i ] ); + if ( y === e ) { + t.equal( y, e, 'x: '+x[ i ]+'. E: '+e ); + } else { + delta = abs( y - e ); + tol = 3.3 * EPS * abs( e ); + t.ok( delta <= tol, 'within tolerance. x: '+x[ i ]+'. y: '+y+'. E: '+e+'. tol: '+tol+'. Δ: '+delta+'.' ); + } + } + t.end(); +}); + +tape( 'the function computes the arcsine (small negative values)', function test( t ) { + var expected; + var delta; + var tol; + var x; + var y; + var i; + var e; + + x = smallNegative.x; + expected = smallNegative.expected; + + for ( i = 0; i < x.length; i++ ) { + y = asinf( ( x[ i ] ) ); + e = float64ToFloat32( expected[ i ] ); + if ( y === e ) { + t.equal( y, e, 'x: '+x[ i ]+'. E: '+e ); + } else { + delta = abs( y - e ); + tol = EPS * abs( e ); + t.ok( delta <= tol, 'within tolerance. x: '+x[ i ]+'. y: '+y+'. E: '+e+'. tol: '+tol+'. Δ: '+delta+'.' ); + } + } + t.end(); +}); + +tape( 'the function computes the arcsine (small positive values)', function test( t ) { + var expected; + var delta; + var tol; + var x; + var y; + var i; + var e; + + x = smallPositive.x; + expected = smallPositive.expected; + + for ( i = 0; i < x.length; i++ ) { + y = asinf( x[ i ] ); + e = float64ToFloat32( expected[ i ] ); + if ( y === e ) { + t.equal( y, e, 'x: '+x[ i ]+'. E: '+e ); + } else { + delta = abs( y - e ); + tol = EPS * abs( e ); + t.ok( delta <= tol, 'within tolerance. x: '+x[ i ]+'. y: '+y+'. E: '+e+'. tol: '+tol+'. Δ: '+delta+'.' ); + } + } + t.end(); +}); + +tape( 'the function returns `NaN` if provided `NaN`', function test( t ) { + var v = asinf( NaN ); + t.equal( isnanf( v ), true, 'returns NaN' ); + 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 = uniform( -1.0e6, -1.0-EPS ); + t.equal( isnanf( asinf( v ) ), true, 'returns NaN 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 = uniform( 1.0+EPS, 1.0e6 ); + t.equal( isnanf( asinf( v ) ), true, 'returns NaN when provided '+v ); + } + t.end(); +}); diff --git a/lib/node_modules/@stdlib/math/base/special/asinf/test/test.native.js b/lib/node_modules/@stdlib/math/base/special/asinf/test/test.native.js new file mode 100644 index 000000000000..71676aa67f71 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/asinf/test/test.native.js @@ -0,0 +1,160 @@ +/** +* @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( '@stdlib/math/base/assert/is-nanf' ); +var EPS = require( '@stdlib/constants/float32/eps' ); +var uniform = require( '@stdlib/random/base/uniform' ); +var abs = require( '@stdlib/math/base/special/abs' ); +var float64ToFloat32 = require( '@stdlib/number/float64/base/to-float32' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var asinf = tryRequire( resolve( __dirname, './../lib/native.js' ) ); +var opts = { + 'skip': ( asinf instanceof Error ) +}; + + +// FIXTURES // + +var data = require( './fixtures/julia/data.json' ); +var smallNegative = require( './fixtures/julia/small_negative.json' ); +var smallPositive = require( './fixtures/julia/small_positive.json' ); + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof asinf, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function computes the arcsine', opts, function test( t ) { + var expected; + var delta; + var tol; + var x; + var y; + var i; + var e; + + x = data.x; + expected = data.expected; + + for ( i = 0; i < x.length; i++ ) { + y = asinf( ( ( x[ i ] ) ) ); + e = float64ToFloat32( expected[ i ] ); + if ( y === e ) { + t.equal( y, e, 'x: '+x[ i ]+'. E: '+e ); + } else { + delta = abs( y - e ); + tol = 3.3 * EPS * abs( e ); + t.ok( delta <= tol, 'within tolerance. x: '+x[ i ]+'. y: '+y+'. E: '+e+'. tol: '+tol+'. Δ: '+delta+'.' ); + } + } + t.end(); +}); + +tape( 'the function computes the arcsine (small negative values)', opts, function test( t ) { + var expected; + var delta; + var tol; + var x; + var y; + var i; + var e; + + x = smallNegative.x; + expected = smallNegative.expected; + + for ( i = 0; i < x.length; i++ ) { + y = asinf( ( x[ i ] ) ); + e = float64ToFloat32( expected[ i ] ); + if ( y === e ) { + t.equal( y, e, 'x: '+x[ i ]+'. E: '+e ); + } else { + delta = abs( y - e ); + tol = EPS * abs( e ); + t.ok( delta <= tol, 'within tolerance. x: '+x[ i ]+'. y: '+y+'. E: '+e+'. tol: '+tol+'. Δ: '+delta+'.' ); + } + } + t.end(); +}); + +tape( 'the function computes the arcsine (small positive values)', opts, function test( t ) { + var expected; + var delta; + var tol; + var x; + var y; + var i; + var e; + + x = smallPositive.x; + expected = smallPositive.expected; + + for ( i = 0; i < x.length; i++ ) { + y = asinf( x[ i ] ); + e = float64ToFloat32( expected[ i ] ); + if ( y === e ) { + t.equal( y, e, 'x: '+x[ i ]+'. E: '+e ); + } else { + delta = abs( y - e ); + tol = EPS * abs( e ); + t.ok( delta <= tol, 'within tolerance. x: '+x[ i ]+'. y: '+y+'. E: '+e+'. tol: '+tol+'. Δ: '+delta+'.' ); + } + } + t.end(); +}); + +tape( 'the function returns `NaN` if provided `NaN`', opts, function test( t ) { + var v = asinf( NaN ); + t.equal( isnanf( v ), true, 'returns NaN' ); + 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 = v = uniform( -1.0e6, -1.0-EPS ); + t.equal( isnanf( asinf( v ) ), true, 'returns NaN 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 = uniform( 1.0+EPS, 1.0e6 ); + t.equal( isnanf( asinf( v ) ), true, 'returns NaN when provided '+v ); + } + t.end(); +}); diff --git a/lib/node_modules/@stdlib/math/base/special/atan2/README.md b/lib/node_modules/@stdlib/math/base/special/atan2/README.md old mode 100644 new mode 100755 index 5818e22e365e..8701afe387a0 --- a/lib/node_modules/@stdlib/math/base/special/atan2/README.md +++ b/lib/node_modules/@stdlib/math/base/special/atan2/README.md @@ -86,6 +86,101 @@ for ( i = 0; i < 100; i++ ) { + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/math/base/special/atan2.h" +``` + +#### stdlib_base_atan2( y, x ) + +Computes the angle in the plane (in radians) between the positive x-axis and the ray from `(0,0)` to the point `(x,y)`. + +```c +double out = stdlib_base_atan2( 2.0, 2.0 ); +// returns ~0.785 + +out = stdlib_base_atan2( 6.0, 2.0 ); +// returns ~1.249 +``` + +The function accepts the following arguments: + +- **y**: `[in] double` - `y` coordinate +- **x**: `[in] double` - `x` coordinate + +```c +double stdlib_base_atan2( const double y, const double x ); +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/math/base/special/atan2.h" +#include +#include + +int main( void ) { + double y; + double x; + double v; + int i; + + for ( i = 0; i < 100; i++ ) { + y = ( ( (double)rand() / (double)RAND_MAX ) * 100.0 ); + x = ( ( (double)rand() / (double)RAND_MAX ) * 100.0 ); + v = stdlib_base_atan2( y, x ); + printf( "atan2(%lf, %lf) = %lf\n", y, x, v ); + } + return 0; +} +``` + +
+ + + +
+ + +