From 719d55fece95f17cda6a52f0929c24303b13464e Mon Sep 17 00:00:00 2001 From: GUNJ JOSHI Date: Sat, 17 Aug 2024 23:19:17 +0530 Subject: [PATCH] feat: add math/base/special/ldexpf --- .../math/base/special/ldexpf/README.md | 212 ++++++++++++++++ .../special/ldexpf/benchmark/benchmark.js | 54 ++++ .../ldexpf/benchmark/benchmark.native.js | 63 +++++ .../ldexpf/benchmark/c/native/Makefile | 146 +++++++++++ .../ldexpf/benchmark/c/native/benchmark.c | 135 ++++++++++ .../math/base/special/ldexpf/binding.gyp | 170 +++++++++++++ .../math/base/special/ldexpf/docs/repl.txt | 41 ++++ .../base/special/ldexpf/docs/types/index.d.ts | 65 +++++ .../base/special/ldexpf/docs/types/test.ts | 56 +++++ .../base/special/ldexpf/examples/c/Makefile | 146 +++++++++++ .../base/special/ldexpf/examples/c/example.c | 34 +++ .../base/special/ldexpf/examples/index.js | 31 +++ .../math/base/special/ldexpf/include.gypi | 53 ++++ .../include/stdlib/math/base/special/ldexpf.h | 40 +++ .../math/base/special/ldexpf/lib/index.js | 58 +++++ .../math/base/special/ldexpf/lib/main.js | 146 +++++++++++ .../math/base/special/ldexpf/lib/native.js | 71 ++++++ .../math/base/special/ldexpf/manifest.json | 82 +++++++ .../math/base/special/ldexpf/package.json | 69 ++++++ .../math/base/special/ldexpf/src/Makefile | 70 ++++++ .../math/base/special/ldexpf/src/addon.c | 99 ++++++++ .../math/base/special/ldexpf/src/main.c | 112 +++++++++ .../ldexpf/test/fixtures/julia/REQUIRE | 2 + .../ldexpf/test/fixtures/julia/large.json | 1 + .../ldexpf/test/fixtures/julia/medium.json | 1 + .../ldexpf/test/fixtures/julia/runner.jl | 93 +++++++ .../ldexpf/test/fixtures/julia/small.json | 1 + .../ldexpf/test/fixtures/julia/subnormal.json | 1 + .../math/base/special/ldexpf/test/test.js | 221 +++++++++++++++++ .../base/special/ldexpf/test/test.native.js | 230 ++++++++++++++++++ 30 files changed, 2503 insertions(+) create mode 100644 lib/node_modules/@stdlib/math/base/special/ldexpf/README.md create mode 100644 lib/node_modules/@stdlib/math/base/special/ldexpf/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/math/base/special/ldexpf/benchmark/benchmark.native.js create mode 100644 lib/node_modules/@stdlib/math/base/special/ldexpf/benchmark/c/native/Makefile create mode 100644 lib/node_modules/@stdlib/math/base/special/ldexpf/benchmark/c/native/benchmark.c create mode 100644 lib/node_modules/@stdlib/math/base/special/ldexpf/binding.gyp create mode 100644 lib/node_modules/@stdlib/math/base/special/ldexpf/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/math/base/special/ldexpf/docs/types/index.d.ts create mode 100644 lib/node_modules/@stdlib/math/base/special/ldexpf/docs/types/test.ts create mode 100644 lib/node_modules/@stdlib/math/base/special/ldexpf/examples/c/Makefile create mode 100644 lib/node_modules/@stdlib/math/base/special/ldexpf/examples/c/example.c create mode 100644 lib/node_modules/@stdlib/math/base/special/ldexpf/examples/index.js create mode 100644 lib/node_modules/@stdlib/math/base/special/ldexpf/include.gypi create mode 100644 lib/node_modules/@stdlib/math/base/special/ldexpf/include/stdlib/math/base/special/ldexpf.h create mode 100644 lib/node_modules/@stdlib/math/base/special/ldexpf/lib/index.js create mode 100644 lib/node_modules/@stdlib/math/base/special/ldexpf/lib/main.js create mode 100644 lib/node_modules/@stdlib/math/base/special/ldexpf/lib/native.js create mode 100644 lib/node_modules/@stdlib/math/base/special/ldexpf/manifest.json create mode 100644 lib/node_modules/@stdlib/math/base/special/ldexpf/package.json create mode 100644 lib/node_modules/@stdlib/math/base/special/ldexpf/src/Makefile create mode 100644 lib/node_modules/@stdlib/math/base/special/ldexpf/src/addon.c create mode 100644 lib/node_modules/@stdlib/math/base/special/ldexpf/src/main.c create mode 100644 lib/node_modules/@stdlib/math/base/special/ldexpf/test/fixtures/julia/REQUIRE create mode 100644 lib/node_modules/@stdlib/math/base/special/ldexpf/test/fixtures/julia/large.json create mode 100644 lib/node_modules/@stdlib/math/base/special/ldexpf/test/fixtures/julia/medium.json create mode 100644 lib/node_modules/@stdlib/math/base/special/ldexpf/test/fixtures/julia/runner.jl create mode 100644 lib/node_modules/@stdlib/math/base/special/ldexpf/test/fixtures/julia/small.json create mode 100644 lib/node_modules/@stdlib/math/base/special/ldexpf/test/fixtures/julia/subnormal.json create mode 100644 lib/node_modules/@stdlib/math/base/special/ldexpf/test/test.js create mode 100644 lib/node_modules/@stdlib/math/base/special/ldexpf/test/test.native.js diff --git a/lib/node_modules/@stdlib/math/base/special/ldexpf/README.md b/lib/node_modules/@stdlib/math/base/special/ldexpf/README.md new file mode 100644 index 00000000000..979878e396b --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/ldexpf/README.md @@ -0,0 +1,212 @@ + + +# ldexpf + +> Multiply a [single-precision floating-point number][ieee754] by an integer power of two. + +
+ +## Usage + +```javascript +var ldexpf = require( '@stdlib/math/base/special/ldexpf' ); +``` + +#### ldexpf( frac, exp ) + +Multiplies a [single-precision floating-point number][ieee754] by an `integer` power of two (i.e., `x = frac * 2^exp`). + +```javascript +var x = ldexpf( 0.5, 3 ); // => 0.5 * 2^3 = 0.5 * 8 +// returns 4.0 + +x = ldexpf( 4.0, -2 ); // => 4 * 2^(-2) = 4 * (1/4) +// returns 1.0 +``` + +If `frac` equals positive or negative zero, `NaN`, or positive or negative `infinity`, the function returns a value equal to `frac`. + +```javascript +var x = ldexpf( 0.0, 20 ); +// returns 0.0 + +x = ldexpf( -0.0, 39 ); +// returns -0.0 + +x = ldexpf( NaN, -101 ); +// returns NaN + +x = ldexpf( Infinity, 11 ); +// returns Infinity + +x = ldexpf( -Infinity, -118 ); +// returns -Infinity +``` + +
+ +
+ +## Notes + +// TODO: update this once we have `frexpf`. + +- This function is the inverse of [`frexp`][@stdlib/math/base/special/frexp]. + +
+ + + +
+ +## Examples + + + +```javascript +var linspace = require( '@stdlib/array/base/linspace' ); +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var ldexpf = require( '@stdlib/math/base/special/ldexpf' ); + +var frac = linspace( 0.0, 100.0, 10 ); +var exp = discreteUniform( 100, 0, 10 ); + +var i; +for ( i = 0; i < frac.length; i++ ) { + console.log( 'ldexpf(%d,%d) = %d', frac[ i ], exp[ i ], ldexpf( frac[ i ], exp[ i ] ) ); +} +``` + +
+ + + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/math/base/special/ldexpf.h" +``` + +#### stdlib_base_ldexpf( frac, exp ) + +Multiplies a [single-precision floating-point number][ieee754] by an integer power of two (i.e., `x = frac * 2^exp`). + +```c +float x = stdlib_base_ldexpf( 0.5f, 3 ); // => 0.5 * 2^3 = 0.5 * 8 +// returns 4.0f +``` + +The function accepts the following arguments: + +- **frac**: `[in] float` input value. +- **exp**: `[in] int32_t` integer power of two. + +```c +float stdlib_base_ldexpf( const float frac, const int32_t exp ); +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/math/base/special/ldexpf.h" +#include +#include + +int main( void ) { + float y; + int i; + + const float frac[] = { 0.5f, 5.0f, 0.0f, 3.5f, 7.9f }; + const int32_t exp[] = { 3, -2, 20, 39, 14 }; + + for ( i = 0; i < 5; i++ ) { + y = stdlib_base_ldexpf( frac[ i ], exp[ i ] ); + printf( "ldexpf(%f, %d) = %f\n", frac[ i ], exp[ i ], y ); + } +} +``` + +
+ + + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/math/base/special/ldexpf/benchmark/benchmark.js b/lib/node_modules/@stdlib/math/base/special/ldexpf/benchmark/benchmark.js new file mode 100644 index 00000000000..3bae1377253 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/ldexpf/benchmark/benchmark.js @@ -0,0 +1,54 @@ +/** +* @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 roundf = require( '@stdlib/math/base/special/roundf' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pkg = require( './../package.json' ).name; +var ldexpf = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var x; + var y; + var z; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + x = ( randu() * 20.0 ) - 10.0; + y = roundf( randu() * 2040.0 ) - 1020.0; + z = ldexpf( x, y ); + if ( isnanf( z ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( z ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/math/base/special/ldexpf/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/math/base/special/ldexpf/benchmark/benchmark.native.js new file mode 100644 index 00000000000..d823866691d --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/ldexpf/benchmark/benchmark.native.js @@ -0,0 +1,63 @@ +/** +* @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 roundf = require( '@stdlib/math/base/special/roundf' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var ldexpf = tryRequire( resolve( __dirname, './../lib/native.js' ) ); +var opts = { + 'skip': ( ldexpf instanceof Error ) +}; + + +// MAIN // + +bench( pkg+'::native', opts, function benchmark( b ) { + var x; + var y; + var z; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + x = ( randu() * 20.0 ) - 10.0; + y = roundf( randu() * 2040.0 ) - 1020.0; + z = ldexpf( x, y ); + if ( isnanf( z ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( z ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/math/base/special/ldexpf/benchmark/c/native/Makefile b/lib/node_modules/@stdlib/math/base/special/ldexpf/benchmark/c/native/Makefile new file mode 100644 index 00000000000..f69e9da2b4d --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/ldexpf/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/ldexpf/benchmark/c/native/benchmark.c b/lib/node_modules/@stdlib/math/base/special/ldexpf/benchmark/c/native/benchmark.c new file mode 100644 index 00000000000..b05550e4918 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/ldexpf/benchmark/c/native/benchmark.c @@ -0,0 +1,135 @@ +/** +* @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/ldexpf.h" +#include +#include +#include +#include +#include + +#define NAME "ldexpf" +#define ITERATIONS 1000000 +#define REPEATS 3 + +/** +* Prints the TAP version. +*/ +static void print_version( void ) { + printf( "TAP version 13\n" ); +} + +/** +* Prints the TAP summary. +* +* @param total total number of tests +* @param passing total number of passing tests +*/ +static void print_summary( int total, int passing ) { + printf( "#\n" ); + printf( "1..%d\n", total ); // TAP plan + printf( "# total %d\n", total ); + printf( "# pass %d\n", passing ); + printf( "#\n" ); + printf( "# ok\n" ); +} + +/** +* Prints benchmarks results. +* +* @param elapsed elapsed time in seconds +*/ +static void print_results( double elapsed ) { + double rate = (double)ITERATIONS / elapsed; + printf( " ---\n" ); + printf( " iterations: %d\n", ITERATIONS ); + printf( " elapsed: %0.9f\n", elapsed ); + printf( " rate: %0.9f\n", rate ); + printf( " ...\n" ); +} + +/** +* Returns a clock time. +* +* @return clock time +*/ +static double tic( void ) { + struct timeval now; + gettimeofday( &now, NULL ); + return (double)now.tv_sec + (double)now.tv_usec/1.0e6; +} + +/** +* Generates a random number on the interval [0,1). +* +* @return random number +*/ +static float rand_float( void ) { + int r = rand(); + return (float)r / ( (float)RAND_MAX + 1.0f ); +} + +/** +* Runs a benchmark. +* +* @return elapsed time in seconds +*/ +static double benchmark( void ) { + double elapsed; + double t; + float x; + float y; + float z; + int i; + + t = tic(); + for ( i = 0; i < ITERATIONS; i++ ) { + x = ( rand_float() * 20.0f ) - 10.0f; + y = ( rand_float() * 2048.0f ) - 1024.0f; + z = stdlib_base_ldexpf( x, y ); + if ( z != z ) { + printf( "should not return NaN\n" ); + break; + } + } + elapsed = tic() - t; + if ( z != z ) { + 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/ldexpf/binding.gyp b/lib/node_modules/@stdlib/math/base/special/ldexpf/binding.gyp new file mode 100644 index 00000000000..ec399223344 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/ldexpf/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/ldexpf/docs/repl.txt b/lib/node_modules/@stdlib/math/base/special/ldexpf/docs/repl.txt new file mode 100644 index 00000000000..750f49c28cb --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/ldexpf/docs/repl.txt @@ -0,0 +1,41 @@ + +{{alias}}( frac, exp ) + Multiplies a single-precision floating-point number by an integer power of + two; i.e., `x = frac * 2^exp`. + + If `frac` equals positive or negative `zero`, `NaN`, or positive or negative + infinity, the function returns a value equal to `frac`. + + Parameters + ---------- + frac: number + Fraction. + + exp: number + Exponent. + + Returns + ------- + out: number + Single-precision floating-point number equal to `frac * 2^exp`. + + Examples + -------- + > var x = {{alias}}( 0.5, 3 ) + 4.0 + > x = {{alias}}( 4.0, -2 ) + 1.0 + > x = {{alias}}( 0.0, 20 ) + 0.0 + > x = {{alias}}( -0.0, 39 ) + -0.0 + > x = {{alias}}( NaN, -101 ) + NaN + > x = {{alias}}( {{alias:@stdlib/constants/float32/pinf}}, 11 ) + Infinity + > x = {{alias}}( {{alias:@stdlib/constants/float32/ninf}}, -118 ) + -Infinity + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/math/base/special/ldexpf/docs/types/index.d.ts b/lib/node_modules/@stdlib/math/base/special/ldexpf/docs/types/index.d.ts new file mode 100644 index 00000000000..75c3b2effb1 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/ldexpf/docs/types/index.d.ts @@ -0,0 +1,65 @@ +/* +* @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 + +/** +* Multiplies a single-precision floating-point number by an integer power of two. +* +* ## Notes +* +* - If `frac` equals positive or negative `zero`, `NaN`, or positive or negative infinity, the function returns a value equal to `frac`. +* +* @param frac - fraction +* @param exp - exponent +* @returns single-precision floating-point number +* +* @example +* var x = ldexpf( 0.5, 3 ); // => 0.5 * 2^3 = 0.5 * 8 +* // returns 4.0 +* +* @example +* var x = ldexpf( 4.0, -2 ); // => 4 * 2^(-2) = 4 * (1/4) +* // returns 1.0 +* +* @example +* var x = ldexpf( 0.0, 20 ); +* // returns 0.0 +* +* @example +* var x = ldexpf( -0.0, 39 ); +* // returns -0.0 +* +* @example +* var x = ldexpf( NaN, -101 ); +* // returns NaN +* +* @example +* var x = ldexpf( Infinity, 11 ); +* // returns Infinity +* +* @example +* var x = ldexpf( -Infinity, -118 ); +* // returns -Infinity +*/ +declare function ldexpf( frac: number, exp: number ): number; + + +// EXPORTS // + +export = ldexpf; diff --git a/lib/node_modules/@stdlib/math/base/special/ldexpf/docs/types/test.ts b/lib/node_modules/@stdlib/math/base/special/ldexpf/docs/types/test.ts new file mode 100644 index 00000000000..430c57a2c75 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/ldexpf/docs/types/test.ts @@ -0,0 +1,56 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import ldexpf = require( './index' ); + + +// TESTS // + +// The function returns a number... +{ + ldexpf( 0.5, 3 ); // $ExpectType number +} + +// The compiler throws an error if the function is provided values other than two numbers... +{ + ldexpf( true, 3 ); // $ExpectError + ldexpf( false, 2 ); // $ExpectError + ldexpf( '5', 1 ); // $ExpectError + ldexpf( [], 1 ); // $ExpectError + ldexpf( {}, 2 ); // $ExpectError + ldexpf( ( x: number ): number => x, 2 ); // $ExpectError + + ldexpf( 9, true ); // $ExpectError + ldexpf( 9, false ); // $ExpectError + ldexpf( 5, '5' ); // $ExpectError + ldexpf( 8, [] ); // $ExpectError + ldexpf( 9, {} ); // $ExpectError + ldexpf( 8, ( x: number ): number => x ); // $ExpectError + + ldexpf( [], true ); // $ExpectError + ldexpf( {}, false ); // $ExpectError + ldexpf( false, '5' ); // $ExpectError + ldexpf( {}, [] ); // $ExpectError + ldexpf( '5', ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided insufficient arguments... +{ + ldexpf(); // $ExpectError + ldexpf( 3 ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/math/base/special/ldexpf/examples/c/Makefile b/lib/node_modules/@stdlib/math/base/special/ldexpf/examples/c/Makefile new file mode 100644 index 00000000000..6aed70daf16 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/ldexpf/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/ldexpf/examples/c/example.c b/lib/node_modules/@stdlib/math/base/special/ldexpf/examples/c/example.c new file mode 100644 index 00000000000..49ada5ddae2 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/ldexpf/examples/c/example.c @@ -0,0 +1,34 @@ +/** +* @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/ldexpf.h" +#include +#include + +int main( void ) { + float y; + int i; + + const float frac[] = { 0.5f, 5.0f, 0.0f, 3.5f, 7.9f }; + const int32_t exp[] = { 3, -2, 20, 39, 14 }; + + for ( i = 0; i < 5; i++ ) { + y = stdlib_base_ldexpf( frac[ i ], exp[ i ] ); + printf( "ldexpf(%f, %d) = %f\n", frac[ i ], exp[ i ], y ); + } +} diff --git a/lib/node_modules/@stdlib/math/base/special/ldexpf/examples/index.js b/lib/node_modules/@stdlib/math/base/special/ldexpf/examples/index.js new file mode 100644 index 00000000000..05f64ab5fd0 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/ldexpf/examples/index.js @@ -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. +*/ + +'use strict'; + +var linspace = require( '@stdlib/array/base/linspace' ); +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var ldexpf = require( './../lib' ); + +var frac = linspace( 0.0, 100.0, 10 ); +var exp = discreteUniform( 100, 0, 10 ); + +var i; +for ( i = 0; i < frac.length; i++ ) { + console.log( 'ldexpf(%d,%d) = %d', frac[ i ], exp[ i ], ldexpf( frac[ i ], exp[ i ] ) ); +} diff --git a/lib/node_modules/@stdlib/math/base/special/ldexpf/include.gypi b/lib/node_modules/@stdlib/math/base/special/ldexpf/include.gypi new file mode 100644 index 00000000000..575cb043c0b --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/ldexpf/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': [ + ' + +/* +* If C++, prevent name mangling so that the compiler emits a binary file having undecorated names, thus mirroring the behavior of a C compiler. +*/ +#ifdef __cplusplus +extern "C" { +#endif + +/** +* Multiplies a single-precision floating-point number by an integer power of two (i.e., x = frac * 2^exp). +*/ +float stdlib_base_ldexpf( const float frac, const int32_t exp ); + +#ifdef __cplusplus +} +#endif + +#endif // !STDLIB_MATH_BASE_SPECIAL_LDEXPF_H diff --git a/lib/node_modules/@stdlib/math/base/special/ldexpf/lib/index.js b/lib/node_modules/@stdlib/math/base/special/ldexpf/lib/index.js new file mode 100644 index 00000000000..ff2ff8199d1 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/ldexpf/lib/index.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'; + +/** +* Multiply a single-precision floating-point number by an integer power of two. +* +* @module @stdlib/math/base/special/ldexpf +* +* @example +* var ldexpf = require( '@stdlib/math/base/special/ldexpf' ); +* +* var x = ldexpf( 0.5, 3 ); // => 0.5 * 2^3 = 0.5 * 8 +* // returns 4.0 +* +* x = ldexpf( 4.0, -2 ); // => 4 * 2^(-2) = 4 * (1/4) +* // returns 1.0 +* +* x = ldexpf( 0.0, 20 ); +* // returns 0.0 +* +* x = ldexpf( -0.0, 39 ); +* // returns -0.0 +* +* x = ldexpf( NaN, -101 ); +* // returns NaN +* +* x = ldexpf( Infinity, 11 ); +* // returns Infinity +* +* x = ldexpf( -Infinity, -118 ); +* // returns -Infinity +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/math/base/special/ldexpf/lib/main.js b/lib/node_modules/@stdlib/math/base/special/ldexpf/lib/main.js new file mode 100644 index 00000000000..0900bbb5531 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/ldexpf/lib/main.js @@ -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. +* +* +* ## Notice +* +* The following copyright and license were part of the original implementation available as part of [FreeBSD]{@link https://svnweb.freebsd.org/base/release/12.2.0/lib/msun/src/s_scalbnf.c?view=markup}. The implementation follows the original, but has been modified for JavaScript. +* +* ```text +* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. +* +* Developed at SunPro, a Sun Microsystems, Inc. business. +* Permission to use, copy, modify, and distribute this +* software is freely granted, provided that this notice +* is preserved. +* ``` +*/ + +'use strict'; + +// MODULES // + +var PINF = require( '@stdlib/constants/float32/pinf' ); +var copysignf = require( '@stdlib/math/base/special/copysignf' ); +var toWord = require( '@stdlib/number/float32/base/to-word' ); +var fromWord = require( '@stdlib/number/float32/base/from-word' ); +var float64ToFloat32 = require( '@stdlib/number/float64/base/to-float32' ); + + +// VARIABLES // + +var TWO25 = 33554432.0; // 0x4c000000 +var TWOM25 = 2.9802322387695312e-8; // 0x33000000 +var TINY = 1.0000000031710769e-30; + + +// MAIN // + +/** +* Multiplies a single-precision floating-point number by an integer power of two. +* +* @param {number} frac - fraction +* @param {integer} exp - exponent +* @returns {number} single-precision floating-point number +* +* @example +* var x = ldexpf( 0.5, 3 ); // => 0.5 * 2^3 = 0.5 * 8 +* // returns 4.0 +* +* @example +* var x = ldexpf( 4.0, -2 ); // => 4 * 2^(-2) = 4 * (1/4) +* // returns 1.0 +* +* @example +* var x = ldexpf( 0.0, 20 ); +* // returns 0.0 +* +* @example +* var x = ldexpf( -0.0, 39 ); +* // returns -0.0 +* +* @example +* var x = ldexpf( NaN, -101 ); +* // returns NaN +* +* @example +* var x = ldexpf( Infinity, 11 ); +* // returns Infinity +* +* @example +* var x = ldexpf( -Infinity, -118 ); +* // returns -Infinity +*/ +function ldexpf( frac, exp ) { + var ix; + var k; + + frac = float64ToFloat32( frac ); + ix = toWord( frac ); + + // Extract exponent + k = ( ix & 0x7f800000 ) >> 23; + + // 0 or subnormal frac + if ( k === 0 ) { + if ( ( ix & 0x7fffffff ) === 0 ) { + // +-0 + return frac; + } + frac = float64ToFloat32( frac * TWO25 ); + ix = toWord( frac ); + k = ( ( ix & 0x7f800000 ) >> 23 ) - 25; + if ( exp < -50000 ) { + // Underflow + return float64ToFloat32( TINY * frac ); + } + } + + // NaN or Inf + if ( k === 0xff ) { + return float64ToFloat32( frac + frac ); + } + k += exp; + if ( k > 0xfe ) { + // Overflow + return copysignf( PINF, frac ); + } + if ( k > 0 ) { + // Normal result + frac = fromWord( ( ix & 0x807fffff ) | ( k << 23 ) ); + return frac; + } + if ( k <= -25 ) { + if ( exp > 50000 ) { + // In case of integer overflow in n + k + return copysignf( PINF, frac ); + } + + // Underflow + return copysignf( 0.0, frac ); + } + + // Subnormal result + k += 25; + frac = fromWord( ( ix & 0x807fffff ) | ( k << 23 ) ); + return float64ToFloat32( frac * TWOM25 ); +} + + +// EXPORTS // + +module.exports = ldexpf; diff --git a/lib/node_modules/@stdlib/math/base/special/ldexpf/lib/native.js b/lib/node_modules/@stdlib/math/base/special/ldexpf/lib/native.js new file mode 100644 index 00000000000..301e037b022 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/ldexpf/lib/native.js @@ -0,0 +1,71 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Multiplies a single-precision floating-point number by an integer power of two. +* +* @private +* @param {number} frac - fraction +* @param {integer} exp - exponent +* @returns {number} single-precision floating-point number +* +* @example +* var x = ldexpf( 0.5, 3 ); // => 0.5 * 2^3 = 0.5 * 8 +* // returns 4.0 +* +* @example +* var x = ldexpf( 4.0, -2 ); // => 4 * 2^(-2) = 4 * (1/4) +* // returns 1.0 +* +* @example +* var x = ldexpf( 0.0, 20 ); +* // returns 0.0 +* +* @example +* var x = ldexpf( -0.0, 39 ); +* // returns -0.0 +* +* @example +* var x = ldexpf( NaN, -101 ); +* // returns NaN +* +* @example +* var x = ldexpf( Infinity, 11 ); +* // returns Infinity +* +* @example +* var x = ldexpf( -Infinity, -118 ); +* // returns -Infinity +*/ +function ldexpf( frac, exp ) { + return addon( frac, exp ); +} + + +// EXPORTS // + +module.exports = ldexpf; diff --git a/lib/node_modules/@stdlib/math/base/special/ldexpf/manifest.json b/lib/node_modules/@stdlib/math/base/special/ldexpf/manifest.json new file mode 100644 index 00000000000..b417674f94c --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/ldexpf/manifest.json @@ -0,0 +1,82 @@ +{ + "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/number/float32/base/from-word", + "@stdlib/number/float32/base/to-word", + "@stdlib/math/base/special/copysignf", + "@stdlib/constants/float32/pinf" + ] + }, + { + "task": "examples", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [ + "-lm" + ], + "libpath": [], + "dependencies": [ + "@stdlib/number/float32/base/from-word", + "@stdlib/number/float32/base/to-word", + "@stdlib/math/base/special/copysignf", + "@stdlib/constants/float32/pinf" + ] + }, + { + "task": "benchmark", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/number/float32/base/from-word", + "@stdlib/number/float32/base/to-word", + "@stdlib/math/base/special/copysignf", + "@stdlib/constants/float32/pinf" + ] + } + ] +} diff --git a/lib/node_modules/@stdlib/math/base/special/ldexpf/package.json b/lib/node_modules/@stdlib/math/base/special/ldexpf/package.json new file mode 100644 index 00000000000..1449e64f979 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/ldexpf/package.json @@ -0,0 +1,69 @@ +{ + "name": "@stdlib/math/base/special/ldexpf", + "version": "0.0.0", + "description": "Multiply a single-precision floating-point number by an integer power of two.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "gypfile": true, + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "include": "./include", + "lib": "./lib", + "src": "./src", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "math", + "mathematics", + "frexp", + "ldexp", + "load", + "exponent", + "flt", + "float", + "floating-point", + "number", + "ieee754" + ] +} diff --git a/lib/node_modules/@stdlib/math/base/special/ldexpf/src/Makefile b/lib/node_modules/@stdlib/math/base/special/ldexpf/src/Makefile new file mode 100644 index 00000000000..bcf18aa4665 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/ldexpf/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/ldexpf/src/addon.c b/lib/node_modules/@stdlib/math/base/special/ldexpf/src/addon.c new file mode 100644 index 00000000000..ef2721e6fde --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/ldexpf/src/addon.c @@ -0,0 +1,99 @@ +/** +* @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/ldexpf.h" +#include +#include +#include + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon( napi_env env, napi_callback_info info ) { + napi_status status; + + // Get callback arguments: + size_t argc = 2; + napi_value argv[ 2 ]; + status = napi_get_cb_info( env, info, &argc, argv, NULL, NULL ); + assert( status == napi_ok ); + + // Check whether we were provided the correct number of arguments: + if ( argc < 2 ) { + status = napi_throw_error( env, NULL, "invalid invocation. Insufficient arguments." ); + assert( status == napi_ok ); + return NULL; + } + if ( argc > 2 ) { + status = napi_throw_error( env, NULL, "invalid invocation. Too many arguments." ); + assert( status == napi_ok ); + return NULL; + } + + napi_valuetype vtype0; + status = napi_typeof( env, argv[ 0 ], &vtype0 ); + assert( status == napi_ok ); + if ( vtype0 != napi_number ) { + status = napi_throw_type_error( env, NULL, "invalid argument. First argument must be a number." ); + assert( status == napi_ok ); + return NULL; + } + + napi_valuetype vtype1; + status = napi_typeof( env, argv[ 1 ], &vtype1 ); + assert( status == napi_ok ); + if ( vtype1 != napi_number ) { + status = napi_throw_type_error( env, NULL, "invalid argument. Second argument must be a number." ); + assert( status == napi_ok ); + return NULL; + } + + double frac; + status = napi_get_value_double( env, argv[ 0 ], &frac ); + assert( status == napi_ok ); + + int32_t exp; + status = napi_get_value_int32( env, argv[ 1 ], &exp ); + assert( status == napi_ok ); + + napi_value v; + status = napi_create_double( env, (double)stdlib_base_ldexpf( (float)frac, exp ), &v ); + assert( status == napi_ok ); + + return v; +} + +/** +* Initializes a Node-API module. +* +* @param env environment under which the function is invoked +* @param exports exports object +* @return main export +*/ +static napi_value init( napi_env env, napi_value exports ) { + napi_value fcn; + napi_status status = napi_create_function( env, "exports", NAPI_AUTO_LENGTH, addon, NULL, &fcn ); + assert( status == napi_ok ); + return fcn; +} + +NAPI_MODULE( NODE_GYP_MODULE_NAME, init ) diff --git a/lib/node_modules/@stdlib/math/base/special/ldexpf/src/main.c b/lib/node_modules/@stdlib/math/base/special/ldexpf/src/main.c new file mode 100644 index 00000000000..1e0a86d6b2a --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/ldexpf/src/main.c @@ -0,0 +1,112 @@ +/** +* @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 following copyright and license were part of the original implementation available as part of [FreeBSD]{@link https://svnweb.freebsd.org/base/release/12.2.0/lib/msun/src/s_scalbnf.c?view=markup}. The implementation follows the original, but has been modified for JavaScript. +* +* ```text +* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. +* +* Developed at SunPro, a Sun Microsystems, Inc. business. +* Permission to use, copy, modify, and distribute this +* software is freely granted, provided that this notice +* is preserved. +* ``` +*/ + +#include "stdlib/math/base/special/ldexpf.h" +#include "stdlib/number/float32/base/to_word.h" +#include "stdlib/number/float32/base/from_word.h" +#include "stdlib/math/base/special/copysignf.h" +#include "stdlib/constants/float32/pinf.h" +#include + +static const float TWO25 = 33554432.0f; // 0x4c000000 +static const float TWOM25 = 2.9802322387695312e-8f; // 0x33000000 +static const float TINY = 1.0000000031710769e-30f; + +/** +* Multiplies a single-precision floating-point number by an integer power of two. +* +* @param frac input value +* @param exp integer power of two +* @return product +* +* @example +* float out = stdlib_base_ldexpf( 0.5f, 3 ); // 0.5 * 2^3 = 0.5 * 8 +* // returns 4.0f +*/ +float stdlib_base_ldexpf( const float frac, const int32_t exp ) { + uint32_t uix; + float fracc; + int32_t ix; + int32_t k; + + stdlib_base_float32_to_word( frac, &uix ); + ix = (int32_t)uix; + + // Extract exponent + k = ( ix & 0x7f800000 ) >> 23; + + // 0 or subnormal frac + fracc = frac; + if ( k == 0 ) { + if ( ( ix & 0x7fffffff ) == 0 ) { + // +-0 + return frac; + } + fracc = frac * TWO25; + stdlib_base_float32_to_word( fracc, &uix ); + ix = (int32_t)uix; + k = ( ( ix & 0x7f800000 ) >> 23 ) - 25; + if ( exp < -50000 ) { + // Underflow + return TINY * fracc; + } + } + + // NaN or Inf + if ( k == 0xff ) { + return fracc + fracc; + } + k += exp; + if ( k > 0xfe ) { + // Overflow + return stdlib_base_copysignf( STDLIB_CONSTANT_FLOAT32_PINF, fracc ); + } + if ( k > 0 ) { + // Normal result + stdlib_base_float32_from_word( (uint32_t)( ( ix & 0x807fffff ) | ( k << 23 ) ), &fracc ); + return fracc; + } + if ( k <= -25 ) { + if ( exp > 50000 ) { + // In case of integer overflow in n + k + return stdlib_base_copysignf( STDLIB_CONSTANT_FLOAT32_PINF, fracc ); + } + + // Underflow + return stdlib_base_copysignf( 0.0f, fracc ); + } + + // Subnormal result + k += 25; + stdlib_base_float32_from_word( (uint32_t)( ( ix & 0x807fffff ) | ( k << 23 ) ), &fracc ); + return fracc * TWOM25; +} diff --git a/lib/node_modules/@stdlib/math/base/special/ldexpf/test/fixtures/julia/REQUIRE b/lib/node_modules/@stdlib/math/base/special/ldexpf/test/fixtures/julia/REQUIRE new file mode 100644 index 00000000000..308c3be89c8 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/ldexpf/test/fixtures/julia/REQUIRE @@ -0,0 +1,2 @@ +julia 1.5 +JSON 0.21 diff --git a/lib/node_modules/@stdlib/math/base/special/ldexpf/test/fixtures/julia/large.json b/lib/node_modules/@stdlib/math/base/special/ldexpf/test/fixtures/julia/large.json new file mode 100644 index 00000000000..155f92134ed --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/ldexpf/test/fixtures/julia/large.json @@ -0,0 +1 @@ +{"frac":[0.6776264,0.5982635,0.5982635,0.8973953,0.5982635,0.74782944,0.8973953,0.5234806,0.5982635,0.67304647,0.74782944,0.82261235,0.8973953,0.9721782,0.5234806,0.5608721,0.5982635,0.635655,0.67304647,0.71043795,0.74782944,0.78522086,0.82261235,0.8600038,0.8973953,0.93478674,0.9721782,0.5047848,0.5234806,0.5421763,0.5608721,0.5795678,0.5982635,0.6169593,0.635655,0.65435076,0.67304647,0.6917422,0.71043795,0.72913367,0.74782944,0.76652515,0.78522086,0.80391663,0.82261235,0.84130806,0.8600038,0.87869954,0.8973953,0.916091,0.93478674,0.9534825,0.9721782,0.990874,0.5047848,0.51413274,0.5234806,0.53282845,0.5421763,0.55152416,0.5608721,0.57021993,0.5795678,0.58891565,0.5982635,0.6076114,0.6169593,0.62630713,0.635655,0.64500284,0.65435076,0.6636986,0.67304647,0.6823943,0.6917422,0.7010901,0.71043795,0.7197858,0.72913367,0.7384815,0.74782944,0.7571773,0.76652515,0.775873,0.78522086,0.7945687,0.80391663,0.8132645,0.82261235,0.8319602,0.84130806,0.850656,0.8600038,0.8693517,0.87869954,0.8880474,0.8973953,0.90674317,0.916091,0.9254389,0.93478674,0.94413465,0.9534825,0.96283036,0.9721782,0.9815261,0.990874,0.5001109,0.5047848,0.5094588,0.51413274,0.51880664,0.5234806,0.5281545,0.53282845,0.5375024,0.5421763,0.54685026,0.55152416,0.5561981,0.5608721,0.565546,0.57021993,0.57489383,0.5795678,0.58424175,0.58891565,0.5935896,0.5982635,0.60293746,0.6076114,0.6122853,0.6169593,0.6216332,0.62630713,0.6309811,0.635655,0.64032894,0.64500284,0.6496768,0.65435076,0.65902466,0.6636986,0.6683725,0.67304647,0.6777204,0.6823943,0.6870683,0.6917422,0.69641614,0.7010901,0.705764,0.71043795,0.71511185,0.7197858,0.72445977,0.72913367,0.7338076,0.7384815,0.7431555,0.74782944,0.75250334,0.7571773,0.7618512,0.76652515,0.77119905,0.775873,0.78054696,0.78522086,0.7898948,0.7945687,0.7992427,0.80391663,0.80859053,0.8132645,0.8179384,0.82261235,0.8272863,0.8319602,0.83663416,0.84130806,0.845982,0.850656,0.8553299,0.8600038,0.8646777,0.8693517,0.87402564,0.87869954,0.8833735,0.8880474,0.89272135,0.8973953,0.9020692,0.90674317,0.91141707,0.916091,0.920765,0.9254389,0.93011284,0.93478674,0.9394607,0.94413465,0.94880855,0.9534825,0.9581564,0.96283036,0.9675043,0.9721782,0.9768522,0.9815261,0.98620003,0.990874,0.9955479,0.5001109,0.5024479,0.5047848,0.5071218,0.5094588,0.51179576,0.51413274,0.51646966,0.51880664,0.5211436,0.5234806,0.5258176,0.5281545,0.5304915,0.53282845,0.5351654,0.5375024,0.5398393,0.5421763,0.5445133,0.54685026,0.54918724,0.55152416,0.55386114,0.5561981,0.5585351,0.5608721,0.563209,0.565546,0.56788296,0.57021993,0.5725569,0.57489383,0.5772308,0.5795678,0.58190477,0.58424175,0.58657867,0.58891565,0.5912526,0.5935896,0.5959266,0.5982635,0.6006005,0.60293746,0.60527444,0.6076114,0.60994834,0.6122853,0.6146223,0.6169593,0.61929625,0.6216332,0.62397015,0.62630713,0.6286441,0.6309811,0.633318,0.635655,0.63799196,0.64032894,0.6426659,0.64500284,0.6473398,0.6496768,0.6520138,0.65435076,0.6566877,0.65902466,0.66136163,0.6636986,0.6660356,0.6683725,0.6707095,0.67304647,0.67538345,0.6777204,0.68005735,0.6823943,0.6847313,0.6870683,0.68940526,0.6917422,0.69407916,0.69641614,0.6987531,0.7010901,0.703427,0.705764,0.708101,0.71043795,0.71277493,0.71511185,0.71744883,0.7197858,0.7221228,0.72445977,0.7267967,0.72913367,0.73147064,0.7338076,0.7361446,0.7384815,0.7408185,0.7431555,0.74549246,0.74782944,0.75016636,0.75250334,0.7548403,0.7571773,0.7595143,0.7618512,0.7641882,0.76652515,0.7688621,0.77119905,0.773536,0.775873,0.77821,0.78054696,0.7828839,0.78522086,0.78755784,0.7898948,0.7922318,0.7945687,0.7969057,0.7992427,0.80157965,0.80391663,0.80625355,0.80859053,0.8109275,0.8132645,0.81560147,0.8179384,0.82027537,0.82261235,0.8249493,0.8272863,0.8296232,0.8319602,0.8342972,0.83663416,0.83897114,0.84130806,0.84364504,0.845982,0.848319,0.850656,0.8529929,0.8553299,0.85766685,0.8600038,0.8623408,0.8646777,0.8670147,0.8693517,0.87168866,0.87402564,0.87636256,0.87869954,0.8810365,0.8833735,0.8857105,0.8880474,0.8903844,0.89272135,0.89505833,0.8973953,0.89973223,0.9020692,0.9044062,0.90674317,0.90908015,0.91141707,0.91375405,0.916091,0.918428,0.920765,0.9231019,0.9254389,0.92777586,0.93011284,0.9324498,0.93478674,0.9371237,0.9394607,0.9417977,0.94413465,0.9464716,0.94880855,0.9511455,0.9534825,0.9558195,0.9581564,0.9604934,0.96283036,0.96516734,0.9675043,0.96984124,0.9721782,0.9745152,0.9768522,0.97918916,0.9815261,0.98386306,0.98620003,0.988537,0.990874,0.9932109,0.9955479,0.99788487,0.5001109,0.5012794,0.5024479,0.5036164,0.5047848,0.5059533,0.5071218,0.5082903,0.5094588,0.51062727,0.51179576,0.51296425,0.51413274,0.5153012,0.51646966,0.51763815,0.51880664,0.5199751,0.5211436,0.5223121,0.5234806,0.5246491,0.5258176,0.52698606,0.5281545,0.529323,0.5304915,0.53165996,0.53282845,0.53399694,0.5351654,0.5363339,0.5375024,0.5386709,0.5398393,0.5410078,0.5421763,0.5433448,0.5445133,0.5456818,0.54685026,0.54801875,0.54918724,0.55035573,0.55152416,0.55269265,0.55386114,0.55502963,0.5561981,0.5573666,0.5585351,0.5597036,0.5608721,0.56204057,0.563209,0.5643775,0.565546,0.56671447,0.56788296,0.56905144,0.57021993,0.5713884,0.5725569,0.5737254,0.57489383,0.5760623,0.5772308,0.5783993,0.5795678,0.5807363,0.58190477,0.58307326,0.58424175,0.58541024,0.58657867,0.58774716,0.58891565,0.59008414,0.5912526,0.5924211,0.5935896,0.5947581,0.5959266,0.5970951,0.5982635,0.599432,0.6006005,0.601769,0.60293746,0.60410595,0.60527444,0.6064429,0.6076114,0.6087799,0.60994834,0.6111168,0.6122853,0.6134538,0.6146223,0.6157908,0.6169593,0.61812776,0.61929625,0.6204647,0.6216332,0.62280166,0.62397015,0.62513864,0.62630713,0.6274756,0.6286441,0.6298126,0.6309811,0.6321495,0.633318,0.6344865,0.635655,0.6368235,0.63799196,0.63916045,0.64032894,0.64149743,0.6426659,0.64383435,0.64500284,0.64617133,0.6473398,0.6485083,0.6496768,0.6508453,0.6520138,0.65318227,0.65435076,0.6555192,0.6566877,0.65785617,0.65902466,0.66019315,0.66136163,0.6625301,0.6636986,0.6648671,0.6660356,0.667204,0.6683725,0.669541,0.6707095,0.671878,0.67304647,0.67421496,0.67538345,0.67655194,0.6777204,0.67888886,0.68005735,0.68122584,0.6823943,0.6835628,0.6847313,0.6858998,0.6870683,0.6882368,0.68940526,0.6905737,0.6917422,0.6929107,0.69407916,0.69524765,0.69641614,0.6975846,0.6987531,0.6999216,0.7010901,0.7022585,0.703427,0.7045955,0.705764,0.7069325,0.708101,0.70926946,0.71043795,0.71160644,0.71277493,0.71394336,0.71511185,0.71628034,0.71744883,0.7186173,0.7197858,0.7209543,0.7221228,0.7232913,0.72445977,0.7256282,0.7267967,0.7279652,0.72913367,0.73030216,0.73147064,0.73263913,0.7338076,0.7349761,0.7361446,0.73731303,0.7384815,0.73965,0.7408185,0.741987,0.7431555,0.74432397,0.74549246,0.74666095,0.74782944,0.74899787,0.75016636,0.75133485,0.75250334,0.7536718,0.7548403,0.7560088,0.7571773,0.7583458,0.7595143,0.7606827,0.7618512,0.7630197,0.7641882,0.76535666,0.76652515,0.76769364,0.7688621,0.7700306,0.77119905,0.77236754,0.773536,0.7747045,0.775873,0.7770415,0.77821,0.7793785,0.78054696,0.78171545,0.7828839,0.7840524,0.78522086,0.78638935,0.78755784,0.78872633,0.7898948,0.7910633,0.7922318,0.7934003,0.7945687,0.7957372,0.7969057,0.7980742,0.7992427,0.80041116,0.80157965,0.80274814,0.80391663,0.8050851,0.80625355,0.80742204,0.80859053,0.809759,0.8109275,0.812096,0.8132645,0.814433,0.81560147,0.81676996,0.8179384,0.8191069,0.82027537,0.82144386,0.82261235,0.82378083,0.8249493,0.8261178,0.8272863,0.8284548,0.8296232,0.8307917,0.8319602,0.8331287,0.8342972,0.83546567,0.83663416,0.83780265,0.83897114,0.8401396,0.84130806,0.84247655,0.84364504,0.8448135,0.845982,0.8471505,0.848319,0.8494875,0.850656,0.85182446,0.8529929,0.8541614,0.8553299,0.85649836,0.85766685,0.85883534,0.8600038,0.8611723,0.8623408,0.8635093,0.8646777,0.8658462,0.8670147,0.8681832,0.8693517,0.8705202,0.87168866,0.87285715,0.87402564,0.87519413,0.87636256,0.87753105,0.87869954,0.87986803,0.8810365,0.882205,0.8833735,0.884542,0.8857105,0.88687897,0.8880474,0.8892159,0.8903844,0.89155287,0.89272135,0.89388984,0.89505833,0.8962268,0.8973953,0.8985638,0.89973223,0.9009007,0.9020692,0.9032377,0.9044062,0.9055747,0.90674317,0.90791166,0.90908015,0.91024864,0.91141707,0.91258556,0.91375405,0.91492254,0.916091,0.9172595,0.918428,0.9195965,0.920765,0.9219334,0.9231019,0.9242704,0.9254389,0.9266074,0.92777586,0.92894435,0.93011284,0.9312813,0.9324498,0.93361825,0.93478674,0.9359552,0.9371237,0.9382922,0.9394607,0.9406292,0.9417977,0.94296616,0.94413465,0.9453031,0.9464716,0.94764006,0.94880855,0.94997704,0.9511455,0.952314,0.9534825,0.954651,0.9558195,0.9569879,0.9581564,0.9593249,0.9604934,0.9616619,0.96283036,0.96399885,0.96516734,0.96633583,0.9675043,0.96867275,0.96984124,0.97100973,0.9721782,0.9733467,0.9745152,0.9756837,0.9768522,0.97802067,0.97918916,0.9803576,0.9815261,0.98269457,0.98386306,0.98503155,0.98620003,0.9873685,0.988537,0.9897055,0.990874,0.9920424,0.9932109,0.9943794,0.9955479,0.9967164,0.99788487,0.99905336,0.5001109,0.50069517,0.5012794,0.50186366,0.5024479,0.50303215,0.5036164,0.50420064,0.5047848,0.50536907,0.5059533,0.50653756,0.5071218,0.50770605,0.5082903,0.50887454,0.5094588,0.510043,0.51062727,0.5112115,0.51179576,0.51238,0.51296425,0.5135485,0.51413274,0.514717,0.5153012,0.5158855,0.51646966,0.5170539,0.51763815,0.5182224,0.51880664,0.5193909,0.5199751,0.5205594,0.5211436,0.52172786,0.5223121,0.52289635,0.5234806,0.52406484,0.5246491,0.5252333,0.5258176,0.5264018,0.52698606,0.5275703,0.5281545,0.52873874,0.529323,0.5299072,0.5304915,0.5310757,0.53165996,0.5322442,0.53282845,0.5334127,0.53399694,0.5345812,0.5351654,0.5357497,0.5363339,0.53691816,0.5375024,0.53808665,0.5386709,0.5392551,0.5398393,0.5404236,0.5410078,0.54159206,0.5421763,0.54276055,0.5433448,0.54392904,0.5445133,0.54509753,0.5456818,0.546266,0.54685026,0.5474345,0.54801875,0.548603,0.54918724,0.5497715,0.55035573,0.5509399,0.55152416,0.5521084,0.55269265,0.5532769,0.55386114,0.5544454,0.55502963,0.5556139,0.5561981,0.55678236,0.5573666,0.55795085,0.5585351,0.55911934,0.5597036,0.56028783,0.5608721,0.5614563,0.56204057,0.56262475,0.563209,0.56379324,0.5643775,0.56496173,0.565546,0.5661302,0.56671447,0.5672987,0.56788296,0.5684672,0.56905144,0.5696357,0.57021993,0.5708042,0.5713884,0.57197267,0.5725569,0.57314116,0.5737254,0.5743096,0.57489383,0.5754781,0.5760623,0.57664657,0.5772308,0.57781506,0.5783993,0.57898355,0.5795678,0.58015203,0.5807363,0.5813205,0.58190477,0.582489,0.58307326,0.5836575,0.58424175,0.584826,0.58541024,0.5859944,0.58657867,0.5871629,0.58774716],"exp":[67.0,117.0,118.0,118.0,119.0,119.0,119.0,120.0,120.0,120.0,120.0,120.0,120.0,120.0,121.0,121.0,121.0,121.0,121.0,121.0,121.0,121.0,121.0,121.0,121.0,121.0,121.0,122.0,122.0,122.0,122.0,122.0,122.0,122.0,122.0,122.0,122.0,122.0,122.0,122.0,122.0,122.0,122.0,122.0,122.0,122.0,122.0,122.0,122.0,122.0,122.0,122.0,122.0,122.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,123.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,124.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,126.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0,127.0],"expected":[1.0e20,9.940357e34,1.9880715e35,2.9821074e35,3.976143e35,4.970179e35,5.964215e35,6.958251e35,7.952286e35,8.946322e35,9.940358e35,1.09343936e36,1.192843e36,1.2922465e36,1.3916501e36,1.4910537e36,1.5904572e36,1.6898608e36,1.7892644e36,1.888668e36,1.9880716e36,2.0874751e36,2.1868787e36,2.2862823e36,2.385686e36,2.4850894e36,2.584493e36,2.6838965e36,2.7833002e36,2.8827037e36,2.9821075e36,3.081511e36,3.1809144e36,3.280318e36,3.3797216e36,3.4791254e36,3.5785288e36,3.6779323e36,3.777336e36,3.8767395e36,3.9761433e36,4.0755468e36,4.1749502e36,4.274354e36,4.3737574e36,4.473161e36,4.5725647e36,4.671968e36,4.771372e36,4.8707753e36,4.9701788e36,5.0695826e36,5.168986e36,5.2683898e36,5.367793e36,5.467197e36,5.5666005e36,5.666004e36,5.7654074e36,5.864811e36,5.964215e36,6.0636184e36,6.163022e36,6.262425e36,6.361829e36,6.461233e36,6.560636e36,6.66004e36,6.759443e36,6.8588467e36,6.958251e36,7.057654e36,7.1570577e36,7.256461e36,7.3558646e36,7.4552687e36,7.554672e36,7.6540756e36,7.753479e36,7.8528825e36,7.9522866e36,8.05169e36,8.1510935e36,8.250497e36,8.3499004e36,8.449304e36,8.548708e36,8.6481114e36,8.747515e36,8.8469183e36,8.946322e36,9.045726e36,9.1451293e36,9.244533e36,9.343936e36,9.44334e36,9.542744e36,9.642147e36,9.741551e36,9.840954e36,9.9403576e36,1.0039762e37,1.0139165e37,1.02385686e37,1.0337972e37,1.04373755e37,1.05367796e37,1.0636183e37,1.0735586e37,1.083499e37,1.0934394e37,1.1033797e37,1.1133201e37,1.1232604e37,1.1332008e37,1.1431412e37,1.1530815e37,1.1630219e37,1.1729622e37,1.1829026e37,1.192843e37,1.2027833e37,1.2127237e37,1.222664e37,1.2326044e37,1.2425448e37,1.252485e37,1.2624255e37,1.2723658e37,1.2823062e37,1.2922466e37,1.3021869e37,1.3121273e37,1.3220675e37,1.332008e37,1.3419484e37,1.3518886e37,1.361829e37,1.3717693e37,1.3817097e37,1.3916502e37,1.4015904e37,1.4115308e37,1.4214711e37,1.4314115e37,1.441352e37,1.4512922e37,1.4612326e37,1.4711729e37,1.4811133e37,1.4910537e37,1.500994e37,1.5109344e37,1.5208747e37,1.5308151e37,1.5407555e37,1.5506958e37,1.5606362e37,1.5705765e37,1.5805169e37,1.5904573e37,1.6003976e37,1.610338e37,1.6202783e37,1.6302187e37,1.640159e37,1.6500994e37,1.6600398e37,1.6699801e37,1.6799205e37,1.6898608e37,1.6998012e37,1.7097416e37,1.7196819e37,1.7296223e37,1.7395626e37,1.749503e37,1.7594434e37,1.7693837e37,1.7793241e37,1.7892644e37,1.7992048e37,1.8091452e37,1.8190855e37,1.8290259e37,1.8389661e37,1.8489066e37,1.858847e37,1.8687872e37,1.8787277e37,1.888668e37,1.8986083e37,1.9085488e37,1.918489e37,1.9284294e37,1.9383697e37,1.9483101e37,1.9582505e37,1.9681908e37,1.9781312e37,1.9880715e37,1.9980119e37,2.0079523e37,2.0178926e37,2.027833e37,2.0377733e37,2.0477137e37,2.0576541e37,2.0675944e37,2.0775348e37,2.0874751e37,2.0974155e37,2.1073559e37,2.1172962e37,2.1272366e37,2.137177e37,2.1471172e37,2.1570576e37,2.166998e37,2.1769384e37,2.1868788e37,2.196819e37,2.2067594e37,2.2166998e37,2.2266402e37,2.2365806e37,2.2465208e37,2.2564612e37,2.2664016e37,2.276342e37,2.2862824e37,2.2962226e37,2.306163e37,2.3161034e37,2.3260438e37,2.3359842e37,2.3459243e37,2.3558648e37,2.3658052e37,2.3757456e37,2.385686e37,2.3956261e37,2.4055665e37,2.415507e37,2.4254474e37,2.4353878e37,2.445328e37,2.4552683e37,2.4652087e37,2.4751492e37,2.4850896e37,2.4950297e37,2.50497e37,2.5149105e37,2.524851e37,2.5347914e37,2.5447315e37,2.554672e37,2.5646123e37,2.5745527e37,2.5844931e37,2.5944333e37,2.6043737e37,2.614314e37,2.6242545e37,2.634195e37,2.644135e37,2.6540755e37,2.664016e37,2.6739563e37,2.6838967e37,2.693837e37,2.7037773e37,2.7137177e37,2.723658e37,2.7335985e37,2.7435387e37,2.753479e37,2.7634195e37,2.77336e37,2.7833003e37,2.7932405e37,2.8031809e37,2.8131213e37,2.8230617e37,2.833002e37,2.8429423e37,2.8528827e37,2.862823e37,2.8727635e37,2.882704e37,2.892644e37,2.9025845e37,2.9125249e37,2.9224653e37,2.9324057e37,2.9423458e37,2.9522862e37,2.9622267e37,2.972167e37,2.9821075e37,2.9920476e37,3.001988e37,3.0119284e37,3.0218689e37,3.0318093e37,3.0417494e37,3.0516898e37,3.0616302e37,3.0715706e37,3.081511e37,3.0914512e37,3.1013916e37,3.111332e37,3.1212724e37,3.1312128e37,3.141153e37,3.1510934e37,3.1610338e37,3.1709742e37,3.1809146e37,3.1908548e37,3.2007952e37,3.2107356e37,3.220676e37,3.2306164e37,3.2405566e37,3.250497e37,3.2604374e37,3.2703778e37,3.280318e37,3.2902584e37,3.3001988e37,3.3101392e37,3.3200796e37,3.3300198e37,3.3399602e37,3.3499006e37,3.359841e37,3.3697814e37,3.3797215e37,3.389662e37,3.3996024e37,3.4095428e37,3.4194832e37,3.4294233e37,3.4393637e37,3.4493042e37,3.4592446e37,3.469185e37,3.4791251e37,3.4890655e37,3.499006e37,3.5089464e37,3.5188868e37,3.528827e37,3.5387673e37,3.5487077e37,3.5586481e37,3.5685886e37,3.5785287e37,3.588469e37,3.5984095e37,3.60835e37,3.6182903e37,3.6282305e37,3.638171e37,3.6481113e37,3.6580517e37,3.6679921e37,3.6779323e37,3.6878727e37,3.697813e37,3.7077535e37,3.717694e37,3.727634e37,3.7375745e37,3.747515e37,3.7574553e37,3.7673957e37,3.777336e37,3.7872763e37,3.7972167e37,3.807157e37,3.8170975e37,3.8270377e37,3.836978e37,3.8469185e37,3.856859e37,3.8667993e37,3.8767395e37,3.8866799e37,3.8966203e37,3.9065607e37,3.916501e37,3.9264413e37,3.9363817e37,3.946322e37,3.9562625e37,3.966203e37,3.976143e37,3.9860835e37,3.9960239e37,4.0059643e37,4.0159047e37,4.0258448e37,4.0357852e37,4.0457257e37,4.055666e37,4.0656065e37,4.0755466e37,4.085487e37,4.0954274e37,4.1053679e37,4.1153083e37,4.1252484e37,4.1351888e37,4.1451292e37,4.1550696e37,4.16501e37,4.1749502e37,4.1848906e37,4.194831e37,4.2047714e37,4.2147118e37,4.224652e37,4.2345924e37,4.2445328e37,4.254473e37,4.2644136e37,4.274354e37,4.2842945e37,4.2942344e37,4.304175e37,4.314115e37,4.3240556e37,4.333996e37,4.3439364e37,4.353877e37,4.363817e37,4.3737576e37,4.383698e37,4.393638e37,4.4035783e37,4.413519e37,4.423459e37,4.4333996e37,4.44334e37,4.4532804e37,4.463221e37,4.473161e37,4.4831016e37,4.4930415e37,4.502982e37,4.5129223e37,4.5228627e37,4.532803e37,4.5427436e37,4.552684e37,4.5626244e37,4.572565e37,4.582505e37,4.592445e37,4.6023855e37,4.612326e37,4.6222663e37,4.6322067e37,4.642147e37,4.6520876e37,4.662028e37,4.6719684e37,4.681909e37,4.6918487e37,4.701789e37,4.7117295e37,4.72167e37,4.7316103e37,4.7415507e37,4.751491e37,4.7614315e37,4.771372e37,4.7813124e37,4.7912523e37,4.8011927e37,4.811133e37,4.8210735e37,4.831014e37,4.8409543e37,4.8508947e37,4.860835e37,4.8707755e37,4.880716e37,4.890656e37,4.9005963e37,4.9105367e37,4.920477e37,4.9304175e37,4.940358e37,4.9502983e37,4.9602387e37,4.970179e37,4.9801195e37,4.9900594e37,5.0e37,5.00994e37,5.0198807e37,5.029821e37,5.0397615e37,5.049702e37,5.0596423e37,5.0695827e37,5.079523e37,5.089463e37,5.0994034e37,5.109344e37,5.119284e37,5.1292246e37,5.139165e37,5.1491055e37,5.159046e37,5.1689863e37,5.1789267e37,5.1888666e37,5.198807e37,5.2087474e37,5.218688e37,5.228628e37,5.2385686e37,5.248509e37,5.2584495e37,5.26839e37,5.27833e37,5.28827e37,5.2982106e37,5.308151e37,5.3180914e37,5.328032e37,5.337972e37,5.3479126e37,5.357853e37,5.3677934e37,5.3777334e37,5.387674e37,5.397614e37,5.4075546e37,5.417495e37,5.4274354e37,5.437376e37,5.447316e37,5.4572566e37,5.467197e37,5.477137e37,5.4870773e37,5.497018e37,5.506958e37,5.5168986e37,5.526839e37,5.5367794e37,5.54672e37,5.55666e37,5.5666006e37,5.5765405e37,5.586481e37,5.5964213e37,5.6063617e37,5.616302e37,5.6262426e37,5.636183e37,5.6461234e37,5.656064e37,5.666004e37,5.675944e37,5.6858845e37,5.695825e37,5.7057653e37,5.7157057e37,5.725646e37,5.7355866e37,5.745527e37,5.7554674e37,5.765408e37,5.7753477e37,5.785288e37,5.7952285e37,5.805169e37,5.8151093e37,5.8250497e37,5.83499e37,5.8449305e37,5.854871e37,5.8648114e37,5.8747513e37,5.8846917e37,5.894632e37,5.9045725e37,5.914513e37,5.9244533e37,5.9343937e37,5.944334e37,5.9542745e37,5.964215e37,5.974155e37,5.9840953e37,5.9940357e37,6.003976e37,6.0139165e37,6.023857e37,6.0337973e37,6.0437377e37,6.053678e37,6.0636185e37,6.0735584e37,6.083499e37,6.093439e37,6.1033797e37,6.11332e37,6.1232605e37,6.133201e37,6.1431413e37,6.1530817e37,6.163022e37,6.172962e37,6.1829024e37,6.192843e37,6.202783e37,6.2127236e37,6.222664e37,6.2326045e37,6.242545e37,6.2524853e37,6.2624257e37,6.2723656e37,6.282306e37,6.2922464e37,6.302187e37,6.312127e37,6.3220676e37,6.332008e37,6.3419485e37,6.351889e37,6.3618293e37,6.371769e37,6.3817096e37,6.39165e37,6.4015904e37,6.411531e37,6.421471e37,6.4314116e37,6.441352e37,6.4512924e37,6.461233e37,6.471173e37,6.481113e37,6.4910536e37,6.500994e37,6.5109344e37,6.520875e37,6.530815e37,6.5407556e37,6.550696e37,6.560636e37,6.5705763e37,6.580517e37,6.590457e37,6.6003976e37,6.610338e37,6.6202784e37,6.630219e37,6.640159e37,6.6500996e37,6.6600395e37,6.66998e37,6.6799203e37,6.6898607e37,6.699801e37,6.7097416e37,6.719682e37,6.7296224e37,6.739563e37,6.749503e37,6.759443e37,6.7693835e37,6.779324e37,6.7892643e37,6.7992047e37,6.809145e37,6.8190856e37,6.829026e37,6.8389664e37,6.848907e37,6.8588467e37,6.868787e37,6.8787275e37,6.888668e37,6.8986083e37,6.9085487e37,6.918489e37,6.9284295e37,6.93837e37,6.9483104e37,6.9582503e37,6.9681907e37,6.978131e37,6.9880715e37,6.998012e37,7.0079523e37,7.0178927e37,7.027833e37,7.0377735e37,7.047714e37,7.057654e37,7.067594e37,7.0775347e37,7.087475e37,7.0974155e37,7.107356e37,7.1172963e37,7.1272367e37,7.137177e37,7.1471175e37,7.1570574e37,7.166998e37,7.176938e37,7.1868787e37,7.196819e37,7.2067595e37,7.2167e37,7.2266403e37,7.2365807e37,7.246521e37,7.256461e37,7.2664014e37,7.276342e37,7.286282e37,7.2962226e37,7.306163e37,7.3161035e37,7.326044e37,7.3359843e37,7.3459247e37,7.3558646e37,7.365805e37,7.3757454e37,7.385686e37,7.395626e37,7.4055666e37,7.415507e37,7.4254475e37,7.435388e37,7.4453283e37,7.455268e37,7.4652086e37,7.475149e37,7.4850894e37,7.49503e37,7.50497e37,7.5149106e37,7.524851e37,7.5347914e37,7.544732e37,7.554672e37,7.564612e37,7.5745526e37,7.584493e37,7.5944334e37,7.604374e37,7.614314e37,7.6242546e37,7.634195e37,7.6441354e37,7.6540753e37,7.664016e37,7.673956e37,7.6838966e37,7.693837e37,7.7037774e37,7.713718e37,7.723658e37,7.7335986e37,7.743539e37,7.753479e37,7.7634193e37,7.7733597e37,7.7833e37,7.7932406e37,7.803181e37,7.8131214e37,7.823062e37,7.833002e37,7.842942e37,7.8528825e37,7.862823e37,7.8727633e37,7.8827037e37,7.892644e37,7.9025845e37,7.912525e37,7.9224654e37,7.932406e37,7.9423457e37,7.952286e37,7.9622265e37,7.972167e37,7.9821073e37,7.9920477e37,8.001988e37,8.0119285e37,8.021869e37,8.0318094e37,8.0417493e37,8.0516897e37,8.06163e37,8.0715705e37,8.081511e37,8.0914513e37,8.1013917e37,8.111332e37,8.1212725e37,8.131213e37,8.141153e37,8.151093e37,8.1610337e37,8.170974e37,8.1809145e37,8.190855e37,8.2007953e37,8.2107357e37,8.220676e37,8.2306165e37,8.2405564e37,8.250497e37,8.260437e37,8.2703777e37,8.280318e37,8.2902585e37,8.300199e37,8.3101393e37,8.3200797e37,8.33002e37,8.33996e37,8.3499004e37,8.359841e37,8.369781e37,8.3797216e37,8.389662e37,8.3996025e37,8.409543e37,8.4194833e37,8.4294237e37,8.4393636e37,8.449304e37,8.4592444e37,8.469185e37,8.479125e37,8.4890656e37,8.499006e37,8.508946e37,8.518887e37,8.528827e37,8.538768e37,8.548708e37,8.558648e37,8.568589e37,8.578529e37,8.588469e37,8.598409e37,8.60835e37,8.61829e37,8.62823e37,8.638171e37,8.648111e37,8.658052e37,8.667992e37,8.677932e37,8.687873e37,8.697813e37,8.707754e37,8.717694e37,8.727634e37,8.737575e37,8.747515e37,8.757456e37,8.767396e37,8.777336e37,8.787276e37,8.797216e37,8.807157e37,8.817097e37,8.827038e37,8.836978e37,8.846918e37,8.856859e37,8.866799e37,8.87674e37,8.88668e37,8.89662e37,8.906561e37,8.916501e37,8.926442e37,8.936382e37,8.946322e37,8.956263e37,8.966203e37,8.976144e37,8.986083e37,8.996023e37,9.005964e37,9.015904e37,9.025845e37,9.035785e37,9.045725e37,9.055666e37,9.065606e37,9.075547e37,9.085487e37,9.095428e37,9.105368e37,9.115308e37,9.125249e37,9.135189e37,9.14513e37,9.15507e37,9.16501e37,9.17495e37,9.18489e37,9.194831e37,9.204771e37,9.214711e37,9.224652e37,9.234592e37,9.244533e37,9.254473e37,9.264413e37,9.274354e37,9.284294e37,9.294235e37,9.304175e37,9.314116e37,9.324056e37,9.333996e37,9.343937e37,9.353877e37,9.363818e37,9.373757e37,9.383697e37,9.393638e37,9.403578e37,9.413519e37,9.423459e37,9.433399e37,9.44334e37,9.45328e37,9.463221e37,9.473161e37,9.483101e37,9.493042e37,9.502982e37,9.512923e37,9.522863e37,9.532804e37,9.542744e37,9.552684e37,9.562625e37,9.572564e37,9.582505e37,9.592445e37,9.602385e37,9.612326e37,9.622266e37,9.632207e37,9.642147e37,9.652087e37,9.662028e37,9.671968e37,9.681909e37,9.691849e37,9.701789e37,9.71173e37,9.72167e37,9.731611e37,9.741551e37,9.751491e37,9.761432e37,9.771371e37,9.781312e37,9.791252e37,9.801193e37,9.811133e37,9.821073e37,9.831014e37,9.840954e37,9.850895e37,9.860835e37,9.870775e37,9.880716e37,9.890656e37,9.900597e37,9.910537e37,9.920477e37,9.930418e37,9.940358e37,9.950299e37,9.960239e37,9.970178e37,9.980119e37,9.990059e37,1.0e38]} diff --git a/lib/node_modules/@stdlib/math/base/special/ldexpf/test/fixtures/julia/medium.json b/lib/node_modules/@stdlib/math/base/special/ldexpf/test/fixtures/julia/medium.json new file mode 100644 index 00000000000..4ecc7261afa --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/ldexpf/test/fixtures/julia/medium.json @@ -0,0 +1 @@ +{"frac":[-0.9765625,-0.974621,-0.97267956,-0.97073805,-0.9687966,-0.9668551,-0.96491367,-0.96297216,-0.96103066,-0.9590892,-0.9571477,-0.9552063,-0.9532648,-0.95132333,-0.9493818,-0.9474404,-0.9454989,-0.9435574,-0.94161594,-0.93967444,-0.937733,-0.9357915,-0.93385005,-0.93190855,-0.92996705,-0.9280256,-0.9260841,-0.92414266,-0.92220116,-0.9202597,-0.9183182,-0.9163767,-0.91443527,-0.91249377,-0.9105523,-0.9086108,-0.9066694,-0.9047279,-0.90278643,-0.90084493,-0.8989034,-0.896962,-0.8950205,-0.89307904,-0.89113754,-0.8891961,-0.8872546,-0.8853131,-0.88337165,-0.88143015,-0.8794887,-0.8775472,-0.87560576,-0.87366426,-0.8717228,-0.8697813,-0.8678398,-0.8658984,-0.86395687,-0.8620154,-0.8600739,-0.8581325,-0.856191,-0.8542495,-0.85230803,-0.85036653,-0.8484251,-0.8464836,-0.84454215,-0.84260064,-0.84065914,-0.8387177,-0.8367762,-0.83483475,-0.83289325,-0.8309518,-0.8290103,-0.82706887,-0.82512736,-0.82318586,-0.8212444,-0.8193029,-0.8173615,-0.81542,-0.8134785,-0.811537,-0.8095955,-0.8076541,-0.8057126,-0.80377114,-0.80182964,-0.7998882,-0.7979467,-0.7960052,-0.79406375,-0.79212224,-0.7901808,-0.7882393,-0.78629786,-0.78435636,-0.7824149,-0.7804734,-0.7785319,-0.77659047,-0.77464896,-0.7727075,-0.770766,-0.7688246,-0.7668831,-0.7649416,-0.76300013,-0.7610586,-0.7591172,-0.7571757,-0.75523424,-0.75329274,-0.7513513,-0.7494098,-0.7474683,-0.74552685,-0.74358535,-0.7416439,-0.7397024,-0.73776096,-0.73581946,-0.73387796,-0.7319365,-0.729995,-0.72805357,-0.72611207,-0.7241706,-0.7222291,-0.7202876,-0.7183462,-0.7164047,-0.71446323,-0.71252173,-0.7105803,-0.7086388,-0.70669734,-0.70475584,-0.70281434,-0.7008729,-0.6989314,-0.69698995,-0.69504845,-0.693107,-0.6911655,-0.689224,-0.68728256,-0.68534106,-0.6833996,-0.6814581,-0.6795167,-0.6775752,-0.67563367,-0.6736922,-0.6717507,-0.6698093,-0.6678678,-0.66592634,-0.66398484,-0.6620434,-0.6601019,-0.6581604,-0.65621895,-0.65427744,-0.652336,-0.6503945,-0.64845306,-0.64651155,-0.64457005,-0.6426286,-0.6406871,-0.63874567,-0.63680416,-0.6348627,-0.6329212,-0.6309797,-0.6290383,-0.6270968,-0.6251553,-0.6232138,-0.6212724,-0.6193309,-0.61738944,-0.61544794,-0.61350644,-0.611565,-0.6096235,-0.60768205,-0.60574055,-0.6037991,-0.6018576,-0.5999161,-0.59797466,-0.59603316,-0.5940917,-0.5921502,-0.59020877,-0.58826727,-0.5863258,-0.5843843,-0.5824428,-0.5805014,-0.5785599,-0.57661843,-0.57467693,-0.5727355,-0.570794,-0.5688525,-0.56691104,-0.56496954,-0.5630281,-0.5610866,-0.55914515,-0.55720365,-0.55526215,-0.5533207,-0.5513792,-0.54943776,-0.54749626,-0.5455548,-0.5436133,-0.5416719,-0.53973037,-0.53778887,-0.5358474,-0.5339059,-0.5319645,-0.530023,-0.52808154,-0.52614003,-0.52419853,-0.5222571,-0.5203156,-0.51837415,-0.51643264,-0.5144912,-0.5125497,-0.5106082,-0.50866675,-0.50672525,-0.5047838,-0.5028423,-0.50090086,-0.9979187,-0.9940358,-0.99015284,-0.9862699,-0.98238695,-0.978504,-0.974621,-0.97073805,-0.9668551,-0.96297216,-0.9590892,-0.9552063,-0.95132333,-0.9474404,-0.9435574,-0.93967444,-0.9357915,-0.93190855,-0.9280256,-0.92414266,-0.9202597,-0.9163767,-0.91249377,-0.9086108,-0.9047279,-0.90084493,-0.896962,-0.89307904,-0.8891961,-0.8853131,-0.88143015,-0.8775472,-0.87366426,-0.8697813,-0.8658984,-0.8620154,-0.8581325,-0.8542495,-0.85036653,-0.8464836,-0.84260064,-0.8387177,-0.83483475,-0.8309518,-0.82706887,-0.82318586,-0.8193029,-0.81542,-0.811537,-0.8076541,-0.80377114,-0.7998882,-0.7960052,-0.79212224,-0.7882393,-0.78435636,-0.7804734,-0.77659047,-0.7727075,-0.7688246,-0.7649416,-0.7610586,-0.7571757,-0.75329274,-0.7494098,-0.74552685,-0.7416439,-0.73776096,-0.73387796,-0.729995,-0.72611207,-0.7222291,-0.7183462,-0.71446323,-0.7105803,-0.70669734,-0.70281434,-0.6989314,-0.69504845,-0.6911655,-0.68728256,-0.6833996,-0.6795167,-0.67563367,-0.6717507,-0.6678678,-0.66398484,-0.6601019,-0.65621895,-0.652336,-0.64845306,-0.64457005,-0.6406871,-0.63680416,-0.6329212,-0.6290383,-0.6251553,-0.6212724,-0.61738944,-0.61350644,-0.6096235,-0.60574055,-0.6018576,-0.59797466,-0.5940917,-0.59020877,-0.5863258,-0.5824428,-0.5785599,-0.57467693,-0.570794,-0.56691104,-0.5630281,-0.55914515,-0.55526215,-0.5513792,-0.54749626,-0.5436133,-0.53973037,-0.5358474,-0.5319645,-0.52808154,-0.52419853,-0.5203156,-0.51643264,-0.5125497,-0.50866675,-0.5047838,-0.50090086,-0.9940358,-0.9862699,-0.978504,-0.97073805,-0.96297216,-0.9552063,-0.9474404,-0.93967444,-0.93190855,-0.92414266,-0.9163767,-0.9086108,-0.90084493,-0.89307904,-0.8853131,-0.8775472,-0.8697813,-0.8620154,-0.8542495,-0.8464836,-0.8387177,-0.8309518,-0.82318586,-0.81542,-0.8076541,-0.7998882,-0.79212224,-0.78435636,-0.77659047,-0.7688246,-0.7610586,-0.75329274,-0.74552685,-0.73776096,-0.729995,-0.7222291,-0.71446323,-0.70669734,-0.6989314,-0.6911655,-0.6833996,-0.67563367,-0.6678678,-0.6601019,-0.652336,-0.64457005,-0.63680416,-0.6290383,-0.6212724,-0.61350644,-0.60574055,-0.59797466,-0.59020877,-0.5824428,-0.57467693,-0.56691104,-0.55914515,-0.5513792,-0.5436133,-0.5358474,-0.52808154,-0.5203156,-0.5125497,-0.5047838,-0.9940358,-0.978504,-0.96297216,-0.9474404,-0.93190855,-0.9163767,-0.90084493,-0.8853131,-0.8697813,-0.8542495,-0.8387177,-0.82318586,-0.8076541,-0.79212224,-0.77659047,-0.7610586,-0.74552685,-0.729995,-0.71446323,-0.6989314,-0.6833996,-0.6678678,-0.652336,-0.63680416,-0.6212724,-0.60574055,-0.59020877,-0.57467693,-0.55914515,-0.5436133,-0.52808154,-0.5125497,-0.9940358,-0.96297216,-0.93190855,-0.90084493,-0.8697813,-0.8387177,-0.8076541,-0.77659047,-0.74552685,-0.71446323,-0.6833996,-0.652336,-0.6212724,-0.59020877,-0.55914515,-0.52808154,-0.9940358,-0.93190855,-0.8697813,-0.8076541,-0.74552685,-0.6833996,-0.6212724,-0.55914515,-0.9940358,-0.8697813,-0.74552685,-0.6212724,-0.9940358,-0.74552685,-0.9940358,-0.9940358,0.0,0.9940358,0.9940358,0.74552685,0.9940358,0.6212724,0.74552685,0.8697813,0.9940358,0.55914515,0.6212724,0.6833996,0.74552685,0.8076541,0.8697813,0.93190855,0.9940358,0.52808154,0.55914515,0.59020877,0.6212724,0.652336,0.6833996,0.71446323,0.74552685,0.77659047,0.8076541,0.8387177,0.8697813,0.90084493,0.93190855,0.96297216,0.9940358,0.5125497,0.52808154,0.5436133,0.55914515,0.57467693,0.59020877,0.60574055,0.6212724,0.63680416,0.652336,0.6678678,0.6833996,0.6989314,0.71446323,0.729995,0.74552685,0.7610586,0.77659047,0.79212224,0.8076541,0.82318586,0.8387177,0.8542495,0.8697813,0.8853131,0.90084493,0.9163767,0.93190855,0.9474404,0.96297216,0.978504,0.9940358,0.5047838,0.5125497,0.5203156,0.52808154,0.5358474,0.5436133,0.5513792,0.55914515,0.56691104,0.57467693,0.5824428,0.59020877,0.59797466,0.60574055,0.61350644,0.6212724,0.6290383,0.63680416,0.64457005,0.652336,0.6601019,0.6678678,0.67563367,0.6833996,0.6911655,0.6989314,0.70669734,0.71446323,0.7222291,0.729995,0.73776096,0.74552685,0.75329274,0.7610586,0.7688246,0.77659047,0.78435636,0.79212224,0.7998882,0.8076541,0.81542,0.82318586,0.8309518,0.8387177,0.8464836,0.8542495,0.8620154,0.8697813,0.8775472,0.8853131,0.89307904,0.90084493,0.9086108,0.9163767,0.92414266,0.93190855,0.93967444,0.9474404,0.9552063,0.96297216,0.97073805,0.978504,0.9862699,0.9940358,0.50090086,0.5047838,0.50866675,0.5125497,0.51643264,0.5203156,0.52419853,0.52808154,0.5319645,0.5358474,0.53973037,0.5436133,0.54749626,0.5513792,0.55526215,0.55914515,0.5630281,0.56691104,0.570794,0.57467693,0.5785599,0.5824428,0.5863258,0.59020877,0.5940917,0.59797466,0.6018576,0.60574055,0.6096235,0.61350644,0.61738944,0.6212724,0.6251553,0.6290383,0.6329212,0.63680416,0.6406871,0.64457005,0.64845306,0.652336,0.65621895,0.6601019,0.66398484,0.6678678,0.6717507,0.67563367,0.6795167,0.6833996,0.68728256,0.6911655,0.69504845,0.6989314,0.70281434,0.70669734,0.7105803,0.71446323,0.7183462,0.7222291,0.72611207,0.729995,0.73387796,0.73776096,0.7416439,0.74552685,0.7494098,0.75329274,0.7571757,0.7610586,0.7649416,0.7688246,0.7727075,0.77659047,0.7804734,0.78435636,0.7882393,0.79212224,0.7960052,0.7998882,0.80377114,0.8076541,0.811537,0.81542,0.8193029,0.82318586,0.82706887,0.8309518,0.83483475,0.8387177,0.84260064,0.8464836,0.85036653,0.8542495,0.8581325,0.8620154,0.8658984,0.8697813,0.87366426,0.8775472,0.88143015,0.8853131,0.8891961,0.89307904,0.896962,0.90084493,0.9047279,0.9086108,0.91249377,0.9163767,0.9202597,0.92414266,0.9280256,0.93190855,0.9357915,0.93967444,0.9435574,0.9474404,0.95132333,0.9552063,0.9590892,0.96297216,0.9668551,0.97073805,0.974621,0.978504,0.98238695,0.9862699,0.99015284,0.9940358,0.9979187,0.50090086,0.5028423,0.5047838,0.50672525,0.50866675,0.5106082,0.5125497,0.5144912,0.51643264,0.51837415,0.5203156,0.5222571,0.52419853,0.52614003,0.52808154,0.530023,0.5319645,0.5339059,0.5358474,0.53778887,0.53973037,0.5416719,0.5436133,0.5455548,0.54749626,0.54943776,0.5513792,0.5533207,0.55526215,0.55720365,0.55914515,0.5610866,0.5630281,0.56496954,0.56691104,0.5688525,0.570794,0.5727355,0.57467693,0.57661843,0.5785599,0.5805014,0.5824428,0.5843843,0.5863258,0.58826727,0.59020877,0.5921502,0.5940917,0.59603316,0.59797466,0.5999161,0.6018576,0.6037991,0.60574055,0.60768205,0.6096235,0.611565,0.61350644,0.61544794,0.61738944,0.6193309,0.6212724,0.6232138,0.6251553,0.6270968,0.6290383,0.6309797,0.6329212,0.6348627,0.63680416,0.63874567,0.6406871,0.6426286,0.64457005,0.64651155,0.64845306,0.6503945,0.652336,0.65427744,0.65621895,0.6581604,0.6601019,0.6620434,0.66398484,0.66592634,0.6678678,0.6698093,0.6717507,0.6736922,0.67563367,0.6775752,0.6795167,0.6814581,0.6833996,0.68534106,0.68728256,0.689224,0.6911655,0.693107,0.69504845,0.69698995,0.6989314,0.7008729,0.70281434,0.70475584,0.70669734,0.7086388,0.7105803,0.71252173,0.71446323,0.7164047,0.7183462,0.7202876,0.7222291,0.7241706,0.72611207,0.72805357,0.729995,0.7319365,0.73387796,0.73581946,0.73776096,0.7397024,0.7416439,0.74358535,0.74552685,0.7474683,0.7494098,0.7513513,0.75329274,0.75523424,0.7571757,0.7591172,0.7610586,0.76300013,0.7649416,0.7668831,0.7688246,0.770766,0.7727075,0.77464896,0.77659047,0.7785319,0.7804734,0.7824149,0.78435636,0.78629786,0.7882393,0.7901808,0.79212224,0.79406375,0.7960052,0.7979467,0.7998882,0.80182964,0.80377114,0.8057126,0.8076541,0.8095955,0.811537,0.8134785,0.81542,0.8173615,0.8193029,0.8212444,0.82318586,0.82512736,0.82706887,0.8290103,0.8309518,0.83289325,0.83483475,0.8367762,0.8387177,0.84065914,0.84260064,0.84454215,0.8464836,0.8484251,0.85036653,0.85230803,0.8542495,0.856191,0.8581325,0.8600739,0.8620154,0.86395687,0.8658984,0.8678398,0.8697813,0.8717228,0.87366426,0.87560576,0.8775472,0.8794887,0.88143015,0.88337165,0.8853131,0.8872546,0.8891961,0.89113754,0.89307904,0.8950205,0.896962,0.8989034,0.90084493,0.90278643,0.9047279,0.9066694,0.9086108,0.9105523,0.91249377,0.91443527,0.9163767,0.9183182,0.9202597,0.92220116,0.92414266,0.9260841,0.9280256,0.92996705,0.93190855,0.93385005,0.9357915,0.937733,0.93967444,0.94161594,0.9435574,0.9454989,0.9474404,0.9493818,0.95132333,0.9532648,0.9552063,0.9571477,0.9590892,0.96103066,0.96297216,0.96491367,0.9668551,0.9687966,0.97073805,0.97267956,0.974621,0.9765625],"exp":[10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,4.0,4.0,4.0,4.0,3.0,3.0,2.0,1.0,0.0,1.0,2.0,3.0,3.0,4.0,4.0,4.0,4.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0],"expected":[-1000.0,-998.0119,-996.02386,-994.03577,-992.0477,-990.05963,-988.0716,-986.0835,-984.0954,-982.10736,-980.11926,-978.1312,-976.1431,-974.1551,-972.167,-970.17896,-968.19086,-966.20276,-964.2147,-962.2266,-960.2386,-958.2505,-956.26245,-954.27435,-952.28625,-950.2982,-948.3101,-946.3221,-944.334,-942.34595,-940.35785,-938.36975,-936.3817,-934.3936,-932.4056,-930.4175,-928.42944,-926.44135,-924.4533,-922.4652,-920.4771,-918.4891,-916.501,-914.51294,-912.52484,-910.5368,-908.5487,-906.5606,-904.5726,-902.5845,-900.59644,-898.60834,-896.6203,-894.6322,-892.64417,-890.65607,-888.66797,-886.67993,-884.69183,-882.7038,-880.7157,-878.72766,-876.73956,-874.75146,-872.7634,-870.7753,-868.7873,-866.7992,-864.81116,-862.82306,-860.83496,-858.8469,-856.8588,-854.8708,-852.8827,-850.89465,-848.90656,-846.9185,-844.9304,-842.9423,-840.9543,-838.9662,-836.97815,-834.99005,-833.002,-831.0139,-829.0258,-827.0378,-825.0497,-823.06165,-821.07355,-819.0855,-817.0974,-815.1093,-813.1213,-811.1332,-809.14514,-807.15704,-805.169,-803.1809,-801.1929,-799.2048,-797.2167,-795.22864,-793.24054,-791.2525,-789.2644,-787.27637,-785.28827,-783.3002,-781.31213,-779.32404,-777.336,-775.3479,-773.35986,-771.37177,-769.3837,-767.3956,-765.40753,-763.4195,-761.4314,-759.44336,-757.45526,-755.4672,-753.4791,-751.491,-749.503,-747.5149,-745.52686,-743.53876,-741.5507,-739.5626,-737.5745,-735.5865,-733.5984,-731.61035,-729.62225,-727.6342,-725.6461,-723.6581,-721.67,-719.6819,-717.69385,-715.70575,-713.7177,-711.7296,-709.7416,-707.7535,-705.7654,-703.77734,-701.78925,-699.8012,-697.8131,-695.8251,-693.837,-691.8489,-689.86084,-687.87274,-685.8847,-683.8966,-681.90857,-679.9205,-677.93243,-675.94434,-673.95624,-671.9682,-669.9801,-667.99207,-666.00397,-664.0159,-662.02783,-660.03973,-658.0517,-656.0636,-654.07556,-652.08746,-650.0994,-648.1113,-646.1232,-644.1352,-642.1471,-640.15906,-638.17096,-636.1829,-634.1948,-632.2068,-630.2187,-628.2306,-626.24255,-624.25446,-622.2664,-620.2783,-618.2903,-616.3022,-614.3141,-612.32605,-610.33795,-608.3499,-606.3618,-604.3738,-602.3857,-600.39764,-598.40955,-596.42145,-594.4334,-592.4453,-590.4573,-588.4692,-586.48114,-584.49304,-582.50494,-580.5169,-578.5288,-576.5408,-574.5527,-572.56464,-570.57654,-568.58844,-566.6004,-564.6123,-562.62427,-560.63617,-558.64813,-556.66003,-554.672,-552.6839,-550.6958,-548.70776,-546.71967,-544.7316,-542.7435,-540.7555,-538.7674,-536.7793,-534.79126,-532.80316,-530.8151,-528.827,-526.839,-524.8509,-522.8628,-520.87476,-518.88666,-516.8986,-514.9105,-512.9225,-510.9344,-508.94632,-506.95825,-504.97018,-502.98212,-500.99405,-499.00595,-497.01788,-495.02982,-493.04175,-491.05368,-489.0656,-487.07755,-485.08948,-483.10138,-481.1133,-479.12524,-477.13718,-475.1491,-473.16104,-471.17297,-469.18488,-467.1968,-465.20874,-463.22067,-461.2326,-459.24454,-457.25647,-455.2684,-453.2803,-451.29224,-449.30417,-447.3161,-445.32803,-443.33997,-441.3519,-439.36383,-437.37573,-435.38766,-433.3996,-431.41153,-429.42346,-427.4354,-425.44733,-423.45926,-421.47116,-419.4831,-417.49503,-415.50696,-413.5189,-411.53082,-409.54276,-407.55466,-405.5666,-403.57852,-401.59045,-399.6024,-397.61432,-395.62625,-393.63818,-391.6501,-389.66202,-387.67395,-385.68588,-383.6978,-381.70975,-379.72168,-377.7336,-375.7455,-373.75745,-371.76938,-369.7813,-367.79324,-365.80518,-363.8171,-361.82904,-359.84094,-357.85287,-355.8648,-353.87674,-351.88867,-349.9006,-347.91254,-345.92444,-343.93637,-341.9483,-339.96024,-337.97217,-335.9841,-333.99603,-332.00797,-330.01987,-328.0318,-326.04373,-324.05566,-322.0676,-320.07953,-318.09146,-316.1034,-314.1153,-312.12723,-310.13916,-308.1511,-306.16302,-304.17496,-302.1869,-300.19882,-298.21072,-296.22266,-294.2346,-292.24652,-290.25845,-288.2704,-286.28232,-284.29422,-282.30615,-280.31808,-278.33002,-276.34195,-274.35388,-272.3658,-270.37775,-268.38965,-266.40158,-264.4135,-262.42545,-260.43738,-258.4493,-256.46124,-254.47316,-252.48509,-250.49702,-248.50894,-246.52087,-244.5328,-242.54474,-240.55666,-238.56859,-236.58052,-234.59244,-232.60437,-230.6163,-228.62823,-226.64015,-224.65208,-222.66402,-220.67595,-218.68787,-216.6998,-214.71173,-212.72366,-210.73558,-208.74751,-206.75945,-204.77138,-202.7833,-200.79523,-198.80716,-196.81909,-194.83101,-192.84294,-190.85487,-188.8668,-186.87872,-184.89066,-182.90259,-180.91452,-178.92644,-176.93837,-174.9503,-172.96222,-170.97415,-168.98608,-166.99802,-165.00993,-163.02187,-161.0338,-159.04573,-157.05765,-155.06958,-153.08151,-151.09344,-149.10536,-147.1173,-145.12923,-143.14116,-141.15308,-139.16501,-137.17694,-135.18887,-133.20079,-131.21272,-129.22466,-127.23658,-125.24851,-123.26044,-121.27237,-119.284294,-117.29622,-115.30815,-113.320076,-111.33201,-109.34393,-107.355865,-105.36779,-103.37972,-101.39165,-99.40358,-97.415504,-95.42744,-93.43936,-91.451294,-89.46322,-87.47515,-85.487076,-83.49901,-81.51093,-79.522865,-77.53479,-75.54672,-73.55865,-71.57058,-69.582504,-67.59444,-65.60636,-63.61829,-61.63022,-59.642147,-57.654076,-55.666004,-53.677933,-51.68986,-49.70179,-47.71372,-45.725647,-43.737576,-41.749504,-39.761433,-37.77336,-35.78529,-33.79722,-31.809145,-29.821074,-27.833002,-25.84493,-23.85686,-21.868788,-19.880716,-17.892645,-15.9045725,-13.916501,-11.92843,-9.940358,-7.9522862,-5.964215,-3.9761431,-1.9880716,0.0,1.9880716,3.9761431,5.964215,7.9522862,9.940358,11.92843,13.916501,15.9045725,17.892645,19.880716,21.868788,23.85686,25.84493,27.833002,29.821074,31.809145,33.79722,35.78529,37.77336,39.761433,41.749504,43.737576,45.725647,47.71372,49.70179,51.68986,53.677933,55.666004,57.654076,59.642147,61.63022,63.61829,65.60636,67.59444,69.582504,71.57058,73.55865,75.54672,77.53479,79.522865,81.51093,83.49901,85.487076,87.47515,89.46322,91.451294,93.43936,95.42744,97.415504,99.40358,101.39165,103.37972,105.36779,107.355865,109.34393,111.33201,113.320076,115.30815,117.29622,119.284294,121.27237,123.26044,125.24851,127.23658,129.22466,131.21272,133.20079,135.18887,137.17694,139.16501,141.15308,143.14116,145.12923,147.1173,149.10536,151.09344,153.08151,155.06958,157.05765,159.04573,161.0338,163.02187,165.00993,166.99802,168.98608,170.97415,172.96222,174.9503,176.93837,178.92644,180.91452,182.90259,184.89066,186.87872,188.8668,190.85487,192.84294,194.83101,196.81909,198.80716,200.79523,202.7833,204.77138,206.75945,208.74751,210.73558,212.72366,214.71173,216.6998,218.68787,220.67595,222.66402,224.65208,226.64015,228.62823,230.6163,232.60437,234.59244,236.58052,238.56859,240.55666,242.54474,244.5328,246.52087,248.50894,250.49702,252.48509,254.47316,256.46124,258.4493,260.43738,262.42545,264.4135,266.40158,268.38965,270.37775,272.3658,274.35388,276.34195,278.33002,280.31808,282.30615,284.29422,286.28232,288.2704,290.25845,292.24652,294.2346,296.22266,298.21072,300.19882,302.1869,304.17496,306.16302,308.1511,310.13916,312.12723,314.1153,316.1034,318.09146,320.07953,322.0676,324.05566,326.04373,328.0318,330.01987,332.00797,333.99603,335.9841,337.97217,339.96024,341.9483,343.93637,345.92444,347.91254,349.9006,351.88867,353.87674,355.8648,357.85287,359.84094,361.82904,363.8171,365.80518,367.79324,369.7813,371.76938,373.75745,375.7455,377.7336,379.72168,381.70975,383.6978,385.68588,387.67395,389.66202,391.6501,393.63818,395.62625,397.61432,399.6024,401.59045,403.57852,405.5666,407.55466,409.54276,411.53082,413.5189,415.50696,417.49503,419.4831,421.47116,423.45926,425.44733,427.4354,429.42346,431.41153,433.3996,435.38766,437.37573,439.36383,441.3519,443.33997,445.32803,447.3161,449.30417,451.29224,453.2803,455.2684,457.25647,459.24454,461.2326,463.22067,465.20874,467.1968,469.18488,471.17297,473.16104,475.1491,477.13718,479.12524,481.1133,483.10138,485.08948,487.07755,489.0656,491.05368,493.04175,495.02982,497.01788,499.00595,500.99405,502.98212,504.97018,506.95825,508.94632,510.9344,512.9225,514.9105,516.8986,518.88666,520.87476,522.8628,524.8509,526.839,528.827,530.8151,532.80316,534.79126,536.7793,538.7674,540.7555,542.7435,544.7316,546.71967,548.70776,550.6958,552.6839,554.672,556.66003,558.64813,560.63617,562.62427,564.6123,566.6004,568.58844,570.57654,572.56464,574.5527,576.5408,578.5288,580.5169,582.50494,584.49304,586.48114,588.4692,590.4573,592.4453,594.4334,596.42145,598.40955,600.39764,602.3857,604.3738,606.3618,608.3499,610.33795,612.32605,614.3141,616.3022,618.2903,620.2783,622.2664,624.25446,626.24255,628.2306,630.2187,632.2068,634.1948,636.1829,638.17096,640.15906,642.1471,644.1352,646.1232,648.1113,650.0994,652.08746,654.07556,656.0636,658.0517,660.03973,662.02783,664.0159,666.00397,667.99207,669.9801,671.9682,673.95624,675.94434,677.93243,679.9205,681.90857,683.8966,685.8847,687.87274,689.86084,691.8489,693.837,695.8251,697.8131,699.8012,701.78925,703.77734,705.7654,707.7535,709.7416,711.7296,713.7177,715.70575,717.69385,719.6819,721.67,723.6581,725.6461,727.6342,729.62225,731.61035,733.5984,735.5865,737.5745,739.5626,741.5507,743.53876,745.52686,747.5149,749.503,751.491,753.4791,755.4672,757.45526,759.44336,761.4314,763.4195,765.40753,767.3956,769.3837,771.37177,773.35986,775.3479,777.336,779.32404,781.31213,783.3002,785.28827,787.27637,789.2644,791.2525,793.24054,795.22864,797.2167,799.2048,801.1929,803.1809,805.169,807.15704,809.14514,811.1332,813.1213,815.1093,817.0974,819.0855,821.07355,823.06165,825.0497,827.0378,829.0258,831.0139,833.002,834.99005,836.97815,838.9662,840.9543,842.9423,844.9304,846.9185,848.90656,850.89465,852.8827,854.8708,856.8588,858.8469,860.83496,862.82306,864.81116,866.7992,868.7873,870.7753,872.7634,874.75146,876.73956,878.72766,880.7157,882.7038,884.69183,886.67993,888.66797,890.65607,892.64417,894.6322,896.6203,898.60834,900.59644,902.5845,904.5726,906.5606,908.5487,910.5368,912.52484,914.51294,916.501,918.4891,920.4771,922.4652,924.4533,926.44135,928.42944,930.4175,932.4056,934.3936,936.3817,938.36975,940.35785,942.34595,944.334,946.3221,948.3101,950.2982,952.28625,954.27435,956.26245,958.2505,960.2386,962.2266,964.2147,966.20276,968.19086,970.17896,972.167,974.1551,976.1431,978.1312,980.11926,982.10736,984.0954,986.0835,988.0716,990.05963,992.0477,994.03577,996.02386,998.0119,1000.0]} diff --git a/lib/node_modules/@stdlib/math/base/special/ldexpf/test/fixtures/julia/runner.jl b/lib/node_modules/@stdlib/math/base/special/ldexpf/test/fixtures/julia/runner.jl new file mode 100644 index 00000000000..10d52b6995e --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/ldexpf/test/fixtures/julia/runner.jl @@ -0,0 +1,93 @@ +#!/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( x, name ) + +Generate fixture data and write to file. + +# Arguments + +* `x`: domain +* `name::AbstractString`: output filename + +# Examples + +``` julia +julia> x = range( 1e-20, stop = 1e-38, length = 1007 ); +julia> gen( x, \"data.json\" ); +``` +""" +function gen( x, name ) + len = length( x ); + + frac = Array{Float32}( undef, len ); + exp = Array{Float32}( undef, len ); + v = Array{Float32}( undef, len ); + + for i in eachindex(x) + out = frexp( x[i] ); + frac[ i ] = out[ 1 ]; + exp[ i ] = out[ 2 ]; + v[ i ] = ldexp( out[1], out[2] ); + end + + # Store data to be written to file as a collection: + data = Dict([ + ("frac", frac), + ("exp", exp), + ("expected", v) + ]); + + # Based on the script directory, create an output filepath: + filepath = joinpath( dir, name ); + + # Write the data to the output filepath as JSON: + outfile = open( filepath, "w" ); + write( outfile, JSON.json(data) ); + write( outfile, "\n" ); + close( outfile ); +end + +# Get the filename: +file = @__FILE__; + +# Extract the directory in which this file resides: +dir = dirname( file ); + +# Small values: +x = range( 1e-20, stop = 1e-38, length = 1007 ); +name = "small.json"; +gen( x, name ); + +# Medium values: +x = range( -1e3, stop = 1e3, length = 1007 ); +name = "medium.json"; +gen( x, name ); + +# Large values: +x = range( 1e20, stop = 1e38, length = 1007 ); +name = "large.json"; +gen( x, name ); + +# Subnormal values: +x = range( 1e-38, stop = 1e-45, length = 1007 ); +name = "subnormal.json"; +gen( x, name ); diff --git a/lib/node_modules/@stdlib/math/base/special/ldexpf/test/fixtures/julia/small.json b/lib/node_modules/@stdlib/math/base/special/ldexpf/test/fixtures/julia/small.json new file mode 100644 index 00000000000..9804247018e --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/ldexpf/test/fixtures/julia/small.json @@ -0,0 +1 @@ +{"frac":[0.73786974,0.7371363,0.7364028,0.7356694,0.7349359,0.73420244,0.73346895,0.73273546,0.732002,0.7312685,0.7305351,0.7298016,0.72906816,0.72833467,0.7276012,0.72686774,0.72613424,0.7254008,0.7246673,0.7239339,0.7232004,0.7224669,0.72173345,0.72099996,0.7202665,0.719533,0.7187996,0.7180661,0.71733266,0.71659917,0.7158657,0.71513224,0.71439874,0.7136653,0.7129318,0.7121984,0.7114649,0.7107314,0.70999795,0.70926446,0.708531,0.7077975,0.7070641,0.7063306,0.7055971,0.70486367,0.7041302,0.70339674,0.70266324,0.7019298,0.7011963,0.7004628,0.6997294,0.6989959,0.69826245,0.69752896,0.6967955,0.696062,0.6953286,0.6945951,0.6938616,0.69312817,0.6923947,0.69166124,0.69092774,0.6901943,0.6894608,0.6887273,0.6879939,0.6872604,0.68652695,0.68579346,0.68506,0.6843265,0.68359303,0.6828596,0.6821261,0.68139267,0.6806592,0.67992574,0.67919225,0.67845875,0.6777253,0.6769918,0.6762584,0.6755249,0.67479146,0.67405796,0.67332447,0.67259103,0.67185754,0.6711241,0.6703906,0.6696572,0.6689237,0.66819024,0.66745675,0.66672325,0.6659898,0.6652563,0.6645229,0.6637894,0.66305596,0.66232246,0.66158897,0.66085553,0.66012204,0.6593886,0.6586551,0.6579217,0.6571882,0.6564547,0.65572125,0.65498775,0.6542543,0.6535208,0.6527874,0.6520539,0.6513204,0.65058696,0.64985347,0.64912003,0.64838654,0.6476531,0.6469196,0.6461862,0.6454527,0.6447192,0.64398575,0.64325225,0.6425188,0.6417853,0.6410519,0.6403184,0.6395849,0.63885146,0.63811797,0.63738453,0.63665104,0.6359176,0.6351841,0.6344506,0.6337172,0.6329837,0.63225025,0.63151675,0.6307833,0.6300498,0.62931633,0.6285829,0.6278494,0.62711596,0.62638247,0.62564903,0.62491554,0.6241821,0.6234486,0.6227151,0.6219817,0.6212482,0.62051475,0.61978126,0.6190478,0.6183143,0.61758083,0.6168474,0.6161139,0.61538047,0.614647,0.61391354,0.61318004,0.61244655,0.6117131,0.6109796,0.6102462,0.6095127,0.60877925,0.60804576,0.60731226,0.6065788,0.60584533,0.6051119,0.6043784,0.60364497,0.6029115,0.602178,0.60144454,0.60071105,0.5999776,0.5992441,0.5985107,0.5977772,0.59704375,0.59631026,0.59557676,0.5948433,0.59410983,0.5933764,0.5926429,0.59190947,0.591176,0.5904425,0.58970904,0.58897555,0.5882421,0.5875086,0.5867752,0.5860417,0.5853082,0.58457476,0.58384126,0.5831078,0.58237433,0.5816409,0.5809074,0.5801739,0.5794405,0.578707,0.57797354,0.57724005,0.5765066,0.5757731,0.5750397,0.5743062,0.5735727,0.57283926,0.57210577,0.57137233,0.57063884,0.5699054,0.5691719,0.5684384,0.567705,0.5669715,0.56623805,0.56550455,0.5647711,0.5640376,0.5633041,0.5625707,0.5618372,0.56110376,0.56037027,0.55963683,0.55890334,0.55816984,0.5574364,0.5567029,0.5559695,0.555236,0.55450255,0.55376905,0.5530356,0.5523021,0.5515686,0.5508352,0.5501017,0.54936826,0.54863477,0.54790133,0.54716784,0.54643434,0.5457009,0.5449674,0.544234,0.5435005,0.54276705,0.54203355,0.54130006,0.5405666,0.5398331,0.5390997,0.5383662,0.53763276,0.53689927,0.5361658,0.53543234,0.53469884,0.5339654,0.5332319,0.5324985,0.531765,0.53103155,0.53029805,0.52956456,0.5288311,0.5280976,0.5273642,0.5266307,0.52589726,0.52516377,0.5244303,0.52369684,0.52296335,0.5222299,0.5214964,0.520763,0.5200295,0.519296,0.51856256,0.51782906,0.5170956,0.51636213,0.5156287,0.5148952,0.5141617,0.5134283,0.5126948,0.51196134,0.51122785,0.5104944,0.5097609,0.5090274,0.508294,0.5075605,0.50682706,0.50609356,0.5053601,0.50462663,0.5038932,0.5031597,0.5024262,0.5016928,0.5009593,0.50022584,0.9989847,0.99751776,0.99605083,0.9945839,0.993117,0.99165004,0.99018306,0.9887161,0.9872492,0.98578227,0.98431534,0.9828484,0.9813815,0.9799145,0.97844756,0.9769806,0.9755137,0.97404677,0.97257984,0.9711129,0.969646,0.968179,0.96671206,0.9652451,0.9637782,0.96231127,0.96084434,0.9593774,0.9579104,0.9564435,0.95497656,0.9535096,0.9520427,0.95057577,0.94910884,0.9476419,0.9461749,0.944708,0.94324106,0.94177413,0.9403072,0.93884027,0.93737334,0.93590635,0.9344394,0.9329725,0.93150556,0.93003863,0.9285717,0.9271048,0.92563784,0.92417085,0.9227039,0.921237,0.91977006,0.91830313,0.9168362,0.9153693,0.9139023,0.91243535,0.9109684,0.9095015,0.90803456,0.90656763,0.9051007,0.9036338,0.9021668,0.90069985,0.8992329,0.897766,0.89629906,0.89483213,0.8933652,0.8918982,0.8904313,0.88896435,0.8874974,0.8860305,0.88456357,0.88309664,0.8816297,0.8801627,0.8786958,0.87722886,0.8757619,0.874295,0.87282807,0.87136114,0.86989415,0.8684272,0.8669603,0.86549336,0.8640264,0.8625595,0.86109257,0.85962564,0.85815865,0.8566917,0.8552248,0.85375786,0.8522909,0.850824,0.84935707,0.8478901,0.84642315,0.8449562,0.8434893,0.84202236,0.8405554,0.8390885,0.83762157,0.8361546,0.83468765,0.8332207,0.8317538,0.83028686,0.82881993,0.827353,0.825886,0.8244191,0.82295215,0.8214852,0.8200183,0.81855136,0.81708443,0.81561744,0.8141505,0.8126836,0.81121665,0.8097497,0.8082828,0.80681586,0.80534893,0.80388194,0.802415,0.8009481,0.79948115,0.7980142,0.7965473,0.79508036,0.7936134,0.79214644,0.7906795,0.7892126,0.78774565,0.7862787,0.7848118,0.78334486,0.7818779,0.78041095,0.778944,0.7774771,0.77601016,0.7745432,0.7730763,0.7716093,0.7701424,0.76867545,0.7672085,0.7657416,0.76427466,0.7628077,0.7613408,0.7598738,0.7584069,0.75693995,0.755473,0.7540061,0.75253916,0.7510722,0.74960524,0.7481383,0.7466714,0.74520445,0.7437375,0.7422706,0.74080366,0.7393367,0.73786974,0.7364028,0.7349359,0.73346895,0.732002,0.7305351,0.72906816,0.7276012,0.72613424,0.7246673,0.7232004,0.72173345,0.7202665,0.7187996,0.71733266,0.7158657,0.71439874,0.7129318,0.7114649,0.70999795,0.708531,0.7070641,0.7055971,0.7041302,0.70266324,0.7011963,0.6997294,0.69826245,0.6967955,0.6953286,0.6938616,0.6923947,0.69092774,0.6894608,0.6879939,0.68652695,0.68506,0.68359303,0.6821261,0.6806592,0.67919225,0.6777253,0.6762584,0.67479146,0.67332447,0.67185754,0.6703906,0.6689237,0.66745675,0.6659898,0.6645229,0.66305596,0.66158897,0.66012204,0.6586551,0.6571882,0.65572125,0.6542543,0.6527874,0.6513204,0.64985347,0.64838654,0.6469196,0.6454527,0.64398575,0.6425188,0.6410519,0.6395849,0.63811797,0.63665104,0.6351841,0.6337172,0.63225025,0.6307833,0.62931633,0.6278494,0.62638247,0.62491554,0.6234486,0.6219817,0.62051475,0.6190478,0.61758083,0.6161139,0.614647,0.61318004,0.6117131,0.6102462,0.60877925,0.60731226,0.60584533,0.6043784,0.6029115,0.60144454,0.5999776,0.5985107,0.59704375,0.59557676,0.59410983,0.5926429,0.591176,0.58970904,0.5882421,0.5867752,0.5853082,0.58384126,0.58237433,0.5809074,0.5794405,0.57797354,0.5765066,0.5750397,0.5735727,0.57210577,0.57063884,0.5691719,0.567705,0.56623805,0.5647711,0.5633041,0.5618372,0.56037027,0.55890334,0.5574364,0.5559695,0.55450255,0.5530356,0.5515686,0.5501017,0.54863477,0.54716784,0.5457009,0.544234,0.54276705,0.54130006,0.5398331,0.5383662,0.53689927,0.53543234,0.5339654,0.5324985,0.53103155,0.52956456,0.5280976,0.5266307,0.52516377,0.52369684,0.5222299,0.520763,0.519296,0.51782906,0.51636213,0.5148952,0.5134283,0.51196134,0.5104944,0.5090274,0.5075605,0.50609356,0.50462663,0.5031597,0.5016928,0.50022584,0.99751776,0.9945839,0.99165004,0.9887161,0.98578227,0.9828484,0.9799145,0.9769806,0.97404677,0.9711129,0.968179,0.9652451,0.96231127,0.9593774,0.9564435,0.9535096,0.95057577,0.9476419,0.944708,0.94177413,0.93884027,0.93590635,0.9329725,0.93003863,0.9271048,0.92417085,0.921237,0.91830313,0.9153693,0.91243535,0.9095015,0.90656763,0.9036338,0.90069985,0.897766,0.89483213,0.8918982,0.88896435,0.8860305,0.88309664,0.8801627,0.87722886,0.874295,0.87136114,0.8684272,0.86549336,0.8625595,0.85962564,0.8566917,0.85375786,0.850824,0.8478901,0.8449562,0.84202236,0.8390885,0.8361546,0.8332207,0.83028686,0.827353,0.8244191,0.8214852,0.81855136,0.81561744,0.8126836,0.8097497,0.80681586,0.80388194,0.8009481,0.7980142,0.79508036,0.79214644,0.7892126,0.7862787,0.78334486,0.78041095,0.7774771,0.7745432,0.7716093,0.76867545,0.7657416,0.7628077,0.7598738,0.75693995,0.7540061,0.7510722,0.7481383,0.74520445,0.7422706,0.7393367,0.7364028,0.73346895,0.7305351,0.7276012,0.7246673,0.72173345,0.7187996,0.7158657,0.7129318,0.70999795,0.7070641,0.7041302,0.7011963,0.69826245,0.6953286,0.6923947,0.6894608,0.68652695,0.68359303,0.6806592,0.6777253,0.67479146,0.67185754,0.6689237,0.6659898,0.66305596,0.66012204,0.6571882,0.6542543,0.6513204,0.64838654,0.6454527,0.6425188,0.6395849,0.63665104,0.6337172,0.6307833,0.6278494,0.62491554,0.6219817,0.6190478,0.6161139,0.61318004,0.6102462,0.60731226,0.6043784,0.60144454,0.5985107,0.59557676,0.5926429,0.58970904,0.5867752,0.58384126,0.5809074,0.57797354,0.5750397,0.57210577,0.5691719,0.56623805,0.5633041,0.56037027,0.5574364,0.55450255,0.5515686,0.54863477,0.5457009,0.54276705,0.5398331,0.53689927,0.5339654,0.53103155,0.5280976,0.52516377,0.5222299,0.519296,0.51636213,0.5134283,0.5104944,0.5075605,0.50462663,0.5016928,0.99751776,0.99165004,0.98578227,0.9799145,0.97404677,0.968179,0.96231127,0.9564435,0.95057577,0.944708,0.93884027,0.9329725,0.9271048,0.921237,0.9153693,0.9095015,0.9036338,0.897766,0.8918982,0.8860305,0.8801627,0.874295,0.8684272,0.8625595,0.8566917,0.850824,0.8449562,0.8390885,0.8332207,0.827353,0.8214852,0.81561744,0.8097497,0.80388194,0.7980142,0.79214644,0.7862787,0.78041095,0.7745432,0.76867545,0.7628077,0.75693995,0.7510722,0.74520445,0.7393367,0.73346895,0.7276012,0.72173345,0.7158657,0.70999795,0.7041302,0.69826245,0.6923947,0.68652695,0.6806592,0.67479146,0.6689237,0.66305596,0.6571882,0.6513204,0.6454527,0.6395849,0.6337172,0.6278494,0.6219817,0.6161139,0.6102462,0.6043784,0.5985107,0.5926429,0.5867752,0.5809074,0.5750397,0.5691719,0.5633041,0.5574364,0.5515686,0.5457009,0.5398331,0.5339654,0.5280976,0.5222299,0.51636213,0.5104944,0.50462663,0.99751776,0.98578227,0.97404677,0.96231127,0.95057577,0.93884027,0.9271048,0.9153693,0.9036338,0.8918982,0.8801627,0.8684272,0.8566917,0.8449562,0.8332207,0.8214852,0.8097497,0.7980142,0.7862787,0.7745432,0.7628077,0.7510722,0.7393367,0.7276012,0.7158657,0.7041302,0.6923947,0.6806592,0.6689237,0.6571882,0.6454527,0.6337172,0.6219817,0.6102462,0.5985107,0.5867752,0.5750397,0.5633041,0.5515686,0.5398331,0.5280976,0.51636213,0.50462663,0.98578227,0.96231127,0.93884027,0.9153693,0.8918982,0.8684272,0.8449562,0.8214852,0.7980142,0.7745432,0.7510722,0.7276012,0.7041302,0.6806592,0.6571882,0.6337172,0.6102462,0.5867752,0.5633041,0.5398331,0.51636213,0.98578227,0.93884027,0.8918982,0.8449562,0.7980142,0.7510722,0.7041302,0.6571882,0.6102462,0.5633041,0.51636213,0.93884027,0.8449562,0.7510722,0.6571882,0.5633041,0.93884027,0.7510722,0.5633041,0.7510722,0.7510722,0.8507059],"exp":[-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-66.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-67.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-68.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-69.0,-70.0,-70.0,-70.0,-70.0,-70.0,-70.0,-70.0,-70.0,-70.0,-70.0,-70.0,-70.0,-70.0,-70.0,-70.0,-70.0,-70.0,-70.0,-70.0,-70.0,-70.0,-70.0,-70.0,-70.0,-70.0,-70.0,-70.0,-70.0,-70.0,-70.0,-70.0,-70.0,-70.0,-70.0,-70.0,-70.0,-70.0,-70.0,-70.0,-70.0,-70.0,-70.0,-70.0,-71.0,-71.0,-71.0,-71.0,-71.0,-71.0,-71.0,-71.0,-71.0,-71.0,-71.0,-71.0,-71.0,-71.0,-71.0,-71.0,-71.0,-71.0,-71.0,-71.0,-71.0,-72.0,-72.0,-72.0,-72.0,-72.0,-72.0,-72.0,-72.0,-72.0,-72.0,-72.0,-73.0,-73.0,-73.0,-73.0,-73.0,-74.0,-74.0,-74.0,-75.0,-76.0,-126.0],"expected":[1.0e-20,9.99006e-21,9.980119e-21,9.970179e-21,9.9602385e-21,9.9502986e-21,9.940358e-21,9.930417e-21,9.920477e-21,9.9105365e-21,9.900597e-21,9.890656e-21,9.880716e-21,9.870775e-21,9.860835e-21,9.850895e-21,9.840954e-21,9.831014e-21,9.8210734e-21,9.8111335e-21,9.801193e-21,9.791252e-21,9.781312e-21,9.7713715e-21,9.7614316e-21,9.751491e-21,9.741551e-21,9.73161e-21,9.72167e-21,9.71173e-21,9.701789e-21,9.691849e-21,9.681908e-21,9.6719684e-21,9.662028e-21,9.652088e-21,9.642147e-21,9.6322064e-21,9.6222665e-21,9.612326e-21,9.602386e-21,9.592445e-21,9.582505e-21,9.572565e-21,9.562624e-21,9.552684e-21,9.542743e-21,9.532803e-21,9.522863e-21,9.512923e-21,9.502982e-21,9.493041e-21,9.4831015e-21,9.473161e-21,9.463221e-21,9.45328e-21,9.44334e-21,9.4333995e-21,9.42346e-21,9.413519e-21,9.403578e-21,9.393638e-21,9.383698e-21,9.373758e-21,9.363817e-21,9.353877e-21,9.3439364e-21,9.333996e-21,9.324056e-21,9.314115e-21,9.304175e-21,9.2942345e-21,9.2842946e-21,9.274354e-21,9.264413e-21,9.254473e-21,9.2445326e-21,9.234593e-21,9.224652e-21,9.214712e-21,9.204771e-21,9.194831e-21,9.184891e-21,9.17495e-21,9.16501e-21,9.1550694e-21,9.1451295e-21,9.135189e-21,9.125248e-21,9.115308e-21,9.1053675e-21,9.095428e-21,9.085487e-21,9.075547e-21,9.065606e-21,9.055666e-21,9.045726e-21,9.035785e-21,9.025845e-21,9.015904e-21,9.0059645e-21,8.996024e-21,8.986084e-21,8.976143e-21,8.9662024e-21,8.9562625e-21,8.946322e-21,8.936382e-21,8.926441e-21,8.916501e-21,8.906561e-21,8.89662e-21,8.88668e-21,8.876739e-21,8.866799e-21,8.856859e-21,8.846919e-21,8.836978e-21,8.827037e-21,8.8170975e-21,8.807157e-21,8.797217e-21,8.787276e-21,8.777336e-21,8.7673956e-21,8.757456e-21,8.747515e-21,8.737574e-21,8.727634e-21,8.717694e-21,8.707754e-21,8.697813e-21,8.687873e-21,8.6779324e-21,8.667992e-21,8.658052e-21,8.648111e-21,8.638171e-21,8.6282305e-21,8.618291e-21,8.60835e-21,8.598409e-21,8.588469e-21,8.5785286e-21,8.568589e-21,8.558648e-21,8.548708e-21,8.538767e-21,8.528827e-21,8.518887e-21,8.508946e-21,8.499006e-21,8.4890654e-21,8.4791255e-21,8.469185e-21,8.459245e-21,8.449304e-21,8.4393635e-21,8.429424e-21,8.419483e-21,8.409543e-21,8.399602e-21,8.389662e-21,8.379722e-21,8.369781e-21,8.359841e-21,8.3499e-21,8.3399605e-21,8.33002e-21,8.32008e-21,8.310139e-21,8.3001985e-21,8.2902586e-21,8.280318e-21,8.270378e-21,8.260437e-21,8.250497e-21,8.240557e-21,8.230616e-21,8.220676e-21,8.210735e-21,8.2007954e-21,8.190855e-21,8.180915e-21,8.170974e-21,8.161033e-21,8.1510935e-21,8.141153e-21,8.131213e-21,8.121272e-21,8.111332e-21,8.1013916e-21,8.091452e-21,8.081511e-21,8.07157e-21,8.06163e-21,8.05169e-21,8.04175e-21,8.031809e-21,8.021869e-21,8.0119284e-21,8.001988e-21,7.992048e-21,7.982107e-21,7.972167e-21,7.9622265e-21,7.952287e-21,7.942346e-21,7.932405e-21,7.922465e-21,7.9125246e-21,7.902585e-21,7.892644e-21,7.882704e-21,7.872763e-21,7.862823e-21,7.852883e-21,7.842942e-21,7.833002e-21,7.8230615e-21,7.8131216e-21,7.803181e-21,7.793241e-21,7.7833e-21,7.7733595e-21,7.76342e-21,7.753479e-21,7.743539e-21,7.733598e-21,7.7236584e-21,7.713718e-21,7.703777e-21,7.693837e-21,7.683896e-21,7.6739565e-21,7.664016e-21,7.654076e-21,7.644135e-21,7.6341945e-21,7.6242546e-21,7.614314e-21,7.604374e-21,7.594433e-21,7.584493e-21,7.574553e-21,7.564612e-21,7.554672e-21,7.544731e-21,7.5347914e-21,7.524851e-21,7.514911e-21,7.50497e-21,7.49503e-21,7.4850895e-21,7.475149e-21,7.465209e-21,7.455268e-21,7.445328e-21,7.4353876e-21,7.425448e-21,7.415507e-21,7.405566e-21,7.395626e-21,7.385686e-21,7.375746e-21,7.365805e-21,7.355865e-21,7.3459244e-21,7.335984e-21,7.326044e-21,7.316103e-21,7.306163e-21,7.2962225e-21,7.286283e-21,7.276342e-21,7.266401e-21,7.256461e-21,7.246521e-21,7.236581e-21,7.22664e-21,7.2167e-21,7.206759e-21,7.1968195e-21,7.186879e-21,7.176938e-21,7.166998e-21,7.1570575e-21,7.1471176e-21,7.137177e-21,7.127237e-21,7.117296e-21,7.1073555e-21,7.097416e-21,7.087475e-21,7.077535e-21,7.067594e-21,7.0576544e-21,7.047714e-21,7.037773e-21,7.027833e-21,7.0178924e-21,7.0079525e-21,6.998012e-21,6.988072e-21,6.978131e-21,6.9681905e-21,6.9582506e-21,6.94831e-21,6.93837e-21,6.928429e-21,6.918489e-21,6.908549e-21,6.898608e-21,6.888668e-21,6.878727e-21,6.8687874e-21,6.858847e-21,6.848907e-21,6.838966e-21,6.829026e-21,6.8190855e-21,6.809145e-21,6.799205e-21,6.789264e-21,6.779324e-21,6.7693836e-21,6.7594433e-21,6.749503e-21,6.7395627e-21,6.7296224e-21,6.719682e-21,6.7097414e-21,6.699801e-21,6.6898608e-21,6.6799205e-21,6.66998e-21,6.66004e-21,6.6500996e-21,6.640159e-21,6.6302185e-21,6.6202782e-21,6.610338e-21,6.6003976e-21,6.5904573e-21,6.580517e-21,6.5705767e-21,6.560636e-21,6.5506957e-21,6.5407554e-21,6.530815e-21,6.5208748e-21,6.5109345e-21,6.500994e-21,6.4910535e-21,6.481113e-21,6.471173e-21,6.4612326e-21,6.4512923e-21,6.441352e-21,6.4314117e-21,6.4214714e-21,6.4115306e-21,6.4015903e-21,6.39165e-21,6.3817097e-21,6.3717694e-21,6.361829e-21,6.351889e-21,6.341948e-21,6.332008e-21,6.3220675e-21,6.3121272e-21,6.302187e-21,6.2922466e-21,6.2823063e-21,6.272366e-21,6.2624253e-21,6.252485e-21,6.2425447e-21,6.2326044e-21,6.222664e-21,6.2127238e-21,6.2027835e-21,6.1928428e-21,6.1829024e-21,6.172962e-21,6.163022e-21,6.1530815e-21,6.1431412e-21,6.133201e-21,6.1232606e-21,6.11332e-21,6.1033796e-21,6.0934393e-21,6.083499e-21,6.0735587e-21,6.0636184e-21,6.053678e-21,6.0437374e-21,6.033797e-21,6.0238568e-21,6.0139165e-21,6.003976e-21,5.994036e-21,5.9840956e-21,5.9741553e-21,5.9642146e-21,5.9542743e-21,5.944334e-21,5.9343936e-21,5.9244533e-21,5.914513e-21,5.9045727e-21,5.894632e-21,5.8846917e-21,5.8747514e-21,5.864811e-21,5.854871e-21,5.8449305e-21,5.8349902e-21,5.82505e-21,5.815109e-21,5.805169e-21,5.7952286e-21,5.7852883e-21,5.775348e-21,5.7654077e-21,5.7554674e-21,5.7455267e-21,5.7355864e-21,5.725646e-21,5.7157057e-21,5.7057654e-21,5.695825e-21,5.685885e-21,5.6759445e-21,5.666004e-21,5.6560635e-21,5.6461232e-21,5.636183e-21,5.6262426e-21,5.6163023e-21,5.606362e-21,5.5964213e-21,5.586481e-21,5.5765407e-21,5.5666004e-21,5.55666e-21,5.5467198e-21,5.5367795e-21,5.5268388e-21,5.5168985e-21,5.506958e-21,5.497018e-21,5.4870776e-21,5.4771372e-21,5.467197e-21,5.4572566e-21,5.447316e-21,5.4373756e-21,5.4274353e-21,5.417495e-21,5.4075547e-21,5.3976144e-21,5.387674e-21,5.3777334e-21,5.367793e-21,5.3578528e-21,5.3479125e-21,5.337972e-21,5.328032e-21,5.3180916e-21,5.3081513e-21,5.2982106e-21,5.2882703e-21,5.27833e-21,5.2683897e-21,5.2584494e-21,5.248509e-21,5.2385687e-21,5.228628e-21,5.2186877e-21,5.2087474e-21,5.198807e-21,5.188867e-21,5.1789265e-21,5.1689862e-21,5.159046e-21,5.1491052e-21,5.139165e-21,5.1292246e-21,5.1192843e-21,5.109344e-21,5.0994037e-21,5.0894634e-21,5.0795227e-21,5.0695824e-21,5.059642e-21,5.0497018e-21,5.0397615e-21,5.029821e-21,5.019881e-21,5.0099405e-21,5.0e-21,4.9900595e-21,4.9801192e-21,4.970179e-21,4.9602386e-21,4.9502983e-21,4.940358e-21,4.9304173e-21,4.920477e-21,4.9105367e-21,4.9005964e-21,4.890656e-21,4.8807158e-21,4.8707755e-21,4.860835e-21,4.8508945e-21,4.840954e-21,4.831014e-21,4.8210736e-21,4.8111333e-21,4.801193e-21,4.7912527e-21,4.781312e-21,4.7713716e-21,4.7614313e-21,4.751491e-21,4.7415507e-21,4.7316104e-21,4.72167e-21,4.71173e-21,4.701789e-21,4.691849e-21,4.6819085e-21,4.6719682e-21,4.662028e-21,4.6520876e-21,4.6421473e-21,4.6322066e-21,4.6222663e-21,4.612326e-21,4.6023857e-21,4.5924454e-21,4.582505e-21,4.5725648e-21,4.562624e-21,4.5526837e-21,4.5427434e-21,4.532803e-21,4.522863e-21,4.5129225e-21,4.5029822e-21,4.493042e-21,4.4831012e-21,4.473161e-21,4.4632206e-21,4.4532803e-21,4.44334e-21,4.4333997e-21,4.4234594e-21,4.4135187e-21,4.4035784e-21,4.393638e-21,4.3836978e-21,4.3737575e-21,4.363817e-21,4.353877e-21,4.3439366e-21,4.333996e-21,4.3240556e-21,4.3141152e-21,4.304175e-21,4.2942346e-21,4.2842943e-21,4.274354e-21,4.2644133e-21,4.254473e-21,4.2445327e-21,4.2345924e-21,4.224652e-21,4.214712e-21,4.2047715e-21,4.194831e-21,4.1848905e-21,4.17495e-21,4.16501e-21,4.1550696e-21,4.1451293e-21,4.135189e-21,4.1252487e-21,4.115308e-21,4.1053677e-21,4.0954274e-21,4.085487e-21,4.0755467e-21,4.0656064e-21,4.055666e-21,4.045726e-21,4.035785e-21,4.025845e-21,4.0159045e-21,4.0059642e-21,3.996024e-21,3.9860836e-21,3.9761433e-21,3.9662026e-21,3.9562623e-21,3.946322e-21,3.9363817e-21,3.9264414e-21,3.916501e-21,3.9065608e-21,3.8966205e-21,3.8866798e-21,3.8767395e-21,3.866799e-21,3.856859e-21,3.8469185e-21,3.8369782e-21,3.827038e-21,3.8170972e-21,3.807157e-21,3.7972166e-21,3.7872763e-21,3.777336e-21,3.7673957e-21,3.7574554e-21,3.747515e-21,3.7375744e-21,3.727634e-21,3.7176938e-21,3.7077535e-21,3.697813e-21,3.687873e-21,3.6779326e-21,3.667992e-21,3.6580516e-21,3.6481113e-21,3.638171e-21,3.6282307e-21,3.6182904e-21,3.60835e-21,3.5984097e-21,3.588469e-21,3.5785287e-21,3.5685884e-21,3.558648e-21,3.548708e-21,3.5387675e-21,3.5288272e-21,3.5188865e-21,3.5089462e-21,3.499006e-21,3.4890656e-21,3.4791253e-21,3.469185e-21,3.4592447e-21,3.449304e-21,3.4393637e-21,3.4294234e-21,3.419483e-21,3.4095428e-21,3.3996025e-21,3.389662e-21,3.3797216e-21,3.3697813e-21,3.359841e-21,3.3499005e-21,3.3399602e-21,3.33002e-21,3.3200794e-21,3.3101391e-21,3.3001988e-21,3.2902585e-21,3.280318e-21,3.2703777e-21,3.2604374e-21,3.250497e-21,3.2405566e-21,3.2306163e-21,3.220676e-21,3.2107357e-21,3.2007952e-21,3.1908549e-21,3.1809146e-21,3.170974e-21,3.1610338e-21,3.1510935e-21,3.1411531e-21,3.1312126e-21,3.1212723e-21,3.111332e-21,3.1013917e-21,3.0914512e-21,3.081511e-21,3.0715706e-21,3.0616303e-21,3.0516898e-21,3.0417495e-21,3.0318092e-21,3.0218687e-21,3.0119284e-21,3.001988e-21,2.9920478e-21,2.9821073e-21,2.972167e-21,2.9622267e-21,2.9522864e-21,2.9423459e-21,2.9324056e-21,2.9224653e-21,2.912525e-21,2.9025844e-21,2.8926441e-21,2.8827038e-21,2.8727633e-21,2.862823e-21,2.8528827e-21,2.8429424e-21,2.833002e-21,2.8230616e-21,2.8131213e-21,2.803181e-21,2.7932405e-21,2.7833002e-21,2.7733599e-21,2.7634194e-21,2.753479e-21,2.7435388e-21,2.7335985e-21,2.723658e-21,2.7137177e-21,2.7037774e-21,2.693837e-21,2.6838965e-21,2.6739562e-21,2.664016e-21,2.6540756e-21,2.6441351e-21,2.6341948e-21,2.6242545e-21,2.614314e-21,2.6043737e-21,2.5944334e-21,2.5844931e-21,2.5745526e-21,2.5646123e-21,2.554672e-21,2.5447317e-21,2.5347912e-21,2.5248509e-21,2.5149106e-21,2.5049703e-21,2.4950298e-21,2.4850895e-21,2.4751492e-21,2.4652087e-21,2.4552684e-21,2.445328e-21,2.4353877e-21,2.4254472e-21,2.415507e-21,2.4055666e-21,2.3956263e-21,2.3856858e-21,2.3757455e-21,2.3658052e-21,2.355865e-21,2.3459244e-21,2.3359841e-21,2.3260438e-21,2.3161033e-21,2.306163e-21,2.2962227e-21,2.2862824e-21,2.2763419e-21,2.2664016e-21,2.2564613e-21,2.246521e-21,2.2365805e-21,2.2266402e-21,2.2166999e-21,2.2067593e-21,2.196819e-21,2.1868787e-21,2.1769384e-21,2.166998e-21,2.1570576e-21,2.1471173e-21,2.137177e-21,2.1272365e-21,2.1172962e-21,2.107356e-21,2.0974156e-21,2.087475e-21,2.0775348e-21,2.0675945e-21,2.057654e-21,2.0477137e-21,2.0377734e-21,2.027833e-21,2.0178926e-21,2.0079523e-21,1.998012e-21,1.9880717e-21,1.9781311e-21,1.9681908e-21,1.9582505e-21,1.9483102e-21,1.9383697e-21,1.9284294e-21,1.9184891e-21,1.9085486e-21,1.8986083e-21,1.888668e-21,1.8787277e-21,1.8687872e-21,1.8588469e-21,1.8489066e-21,1.8389663e-21,1.8290258e-21,1.8190855e-21,1.8091452e-21,1.7992049e-21,1.7892644e-21,1.779324e-21,1.7693838e-21,1.7594433e-21,1.749503e-21,1.7395626e-21,1.7296223e-21,1.7196818e-21,1.7097415e-21,1.6998012e-21,1.6898608e-21,1.6799205e-21,1.6699801e-21,1.6600397e-21,1.6500994e-21,1.640159e-21,1.6302187e-21,1.6202783e-21,1.610338e-21,1.6003976e-21,1.5904573e-21,1.5805169e-21,1.5705766e-21,1.5606362e-21,1.5506959e-21,1.5407555e-21,1.5308152e-21,1.5208748e-21,1.5109343e-21,1.500994e-21,1.4910536e-21,1.4811133e-21,1.4711729e-21,1.4612326e-21,1.4512922e-21,1.4413519e-21,1.4314115e-21,1.4214712e-21,1.4115308e-21,1.4015905e-21,1.3916501e-21,1.3817097e-21,1.3717694e-21,1.361829e-21,1.3518887e-21,1.3419483e-21,1.332008e-21,1.3220676e-21,1.3121273e-21,1.3021869e-21,1.2922466e-21,1.2823061e-21,1.2723658e-21,1.2624254e-21,1.2524851e-21,1.2425447e-21,1.2326043e-21,1.222664e-21,1.2127236e-21,1.2027833e-21,1.1928429e-21,1.1829026e-21,1.1729622e-21,1.1630219e-21,1.1530815e-21,1.1431412e-21,1.1332008e-21,1.1232605e-21,1.1133201e-21,1.1033797e-21,1.0934394e-21,1.083499e-21,1.0735587e-21,1.0636183e-21,1.053678e-21,1.0437375e-21,1.0337972e-21,1.0238568e-21,1.0139165e-21,1.0039761e-21,9.940358e-22,9.840954e-22,9.741551e-22,9.642147e-22,9.542743e-22,9.44334e-22,9.343936e-22,9.244533e-22,9.145129e-22,9.045726e-22,8.946322e-22,8.846919e-22,8.747515e-22,8.648112e-22,8.548708e-22,8.449304e-22,8.3499006e-22,8.250497e-22,8.1510935e-22,8.05169e-22,7.9522864e-22,7.852883e-22,7.7534793e-22,7.654076e-22,7.5546717e-22,7.455268e-22,7.3558647e-22,7.256461e-22,7.1570576e-22,7.057654e-22,6.9582505e-22,6.858847e-22,6.7594434e-22,6.66004e-22,6.5606363e-22,6.461233e-22,6.361829e-22,6.2624257e-22,6.1630216e-22,6.063618e-22,5.9642146e-22,5.864811e-22,5.7654075e-22,5.666004e-22,5.5666004e-22,5.467197e-22,5.3677933e-22,5.26839e-22,5.168986e-22,5.0695827e-22,4.970179e-22,4.8707756e-22,4.7713715e-22,4.671968e-22,4.5725645e-22,4.473161e-22,4.3737574e-22,4.274354e-22,4.1749503e-22,4.0755467e-22,3.9761432e-22,3.8767397e-22,3.7773359e-22,3.6779323e-22,3.5785288e-22,3.4791252e-22,3.3797217e-22,3.2803182e-22,3.1809146e-22,3.0815108e-22,2.9821073e-22,2.8827037e-22,2.7833002e-22,2.6838967e-22,2.584493e-22,2.4850896e-22,2.3856858e-22,2.2862822e-22,2.1868787e-22,2.0874751e-22,1.9880716e-22,1.8886679e-22,1.7892644e-22,1.6898608e-22,1.5904573e-22,1.4910536e-22,1.3916501e-22,1.2922466e-22,1.1928429e-22,1.0934393e-22,9.940358e-23,8.946322e-23,7.9522865e-23,6.9582505e-23,5.9642144e-23,4.970179e-23,3.9761433e-23,2.9821072e-23,1.9880716e-23,9.940358e-24,1.0e-38]} diff --git a/lib/node_modules/@stdlib/math/base/special/ldexpf/test/fixtures/julia/subnormal.json b/lib/node_modules/@stdlib/math/base/special/ldexpf/test/fixtures/julia/subnormal.json new file mode 100644 index 00000000000..330921b6b96 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/ldexpf/test/fixtures/julia/subnormal.json @@ -0,0 +1 @@ +{"frac":[0.8507059,0.8498603,0.84901464,0.848169,0.8473234,0.84647775,0.84563214,0.84478647,0.84394085,0.84309524,0.8422496,0.84140396,0.84055835,0.8397127,0.83886707,0.83802146,0.8371758,0.8363302,0.83548456,0.8346389,0.8337933,0.8329477,0.832102,0.8312564,0.8304107,0.8295651,0.8287195,0.8278738,0.8270282,0.8261826,0.82533693,0.8244913,0.8236457,0.82280004,0.8219544,0.8211088,0.82026315,0.81941754,0.8185719,0.81772625,0.81688064,0.81603503,0.81518936,0.81434375,0.8134981,0.81265247,0.81180686,0.8109612,0.8101156,0.80926996,0.8084243,0.8075787,0.8067331,0.8058874,0.8050418,0.8041962,0.8033505,0.8025049,0.8016593,0.8008136,0.799968,0.79912233,0.7982767,0.7974311,0.79658544,0.7957398,0.7948942,0.79404855,0.79320294,0.7923573,0.79151165,0.79066604,0.78982043,0.78897476,0.78812915,0.78728354,0.78643787,0.78559226,0.78474665,0.783901,0.78305537,0.7822097,0.7813641,0.7805185,0.7796728,0.7788272,0.7779816,0.7771359,0.7762903,0.7754447,0.774599,0.7737534,0.7729078,0.7720621,0.7712165,0.7703709,0.76952523,0.7686796,0.76783395,0.76698834,0.7661427,0.76529706,0.76445144,0.76360583,0.76276016,0.76191455,0.76106894,0.76022327,0.75937766,0.75853205,0.7576864,0.75684077,0.75599515,0.7551495,0.7543039,0.75345826,0.7526126,0.751767,0.7509213,0.7500757,0.7492301,0.7483844,0.7475388,0.7466932,0.7458475,0.7450019,0.7441563,0.74331063,0.742465,0.7416194,0.74077374,0.7399281,0.7390825,0.73823684,0.73739123,0.73654556,0.73569995,0.73485434,0.73400867,0.73316306,0.73231745,0.7314718,0.73062617,0.72978055,0.7289349,0.7280893,0.72724366,0.726398,0.7255524,0.72470677,0.7238611,0.7230155,0.7221699,0.7213242,0.7204786,0.7196329,0.7187873,0.7179417,0.71709603,0.7162504,0.7154048,0.71455914,0.7137135,0.7128679,0.71202224,0.71117663,0.710331,0.70948535,0.70863974,0.70779413,0.70694846,0.70610285,0.7052572,0.70441157,0.70356596,0.7027203,0.7018747,0.70102906,0.7001834,0.6993378,0.69849217,0.6976465,0.6968009,0.6959553,0.6951096,0.694264,0.6934184,0.6925727,0.6917271,0.6908815,0.6900358,0.6891902,0.68834454,0.6874989,0.6866533,0.68580765,0.68496203,0.6841164,0.68327075,0.68242514,0.68157953,0.68073386,0.67988825,0.67904264,0.67819697,0.67735136,0.67650574,0.6756601,0.67481446,0.6739688,0.6731232,0.67227757,0.6714319,0.6705863,0.6697407,0.668895,0.6680494,0.6672038,0.6663581,0.6655125,0.6646669,0.6638212,0.6629756,0.66213,0.6612843,0.6604387,0.6595931,0.65874743,0.6579018,0.65705615,0.65621054,0.65536493,0.65451926,0.65367365,0.65282804,0.65198237,0.65113676,0.65029114,0.6494455,0.64859986,0.64775425,0.6469086,0.64606297,0.64521736,0.6443717,0.6435261,0.6426804,0.6418348,0.6409892,0.6401435,0.6392979,0.6384523,0.6376066,0.636761,0.6359154,0.6350697,0.6342241,0.6333785,0.63253284,0.6316872,0.6308416,0.62999594,0.62915033,0.6283047,0.62745905,0.62661344,0.62576777,0.62492216,0.62407655,0.6232309,0.62238526,0.62153965,0.620694,0.6198484,0.61900276,0.6181571,0.6173115,0.61646587,0.6156202,0.6147746,0.613929,0.6130833,0.6122377,0.611392,0.6105464,0.6097008,0.6088551,0.6080095,0.6071639,0.60631824,0.6054726,0.604627,0.60378134,0.60293573,0.6020901,0.60124445,0.60039884,0.5995532,0.59870756,0.59786195,0.59701633,0.59617066,0.59532505,0.5944794,0.5936338,0.59278816,0.5919425,0.5910969,0.59025127,0.5894056,0.58856,0.5877144,0.5868687,0.5860231,0.5851775,0.5843318,0.5834862,0.5826406,0.5817949,0.5809493,0.58010364,0.579258,0.5784124,0.57756674,0.57672113,0.5758755,0.57502985,0.57418424,0.5733386,0.57249296,0.57164735,0.57080173,0.56995606,0.56911045,0.56826484,0.5674192,0.56657356,0.56572795,0.5648823,0.56403667,0.563191,0.5623454,0.5614998,0.5606541,0.5598085,0.5589629,0.5581172,0.5572716,0.556426,0.5555803,0.5547347,0.5538891,0.5530434,0.5521978,0.5513522,0.55050653,0.5496609,0.54881525,0.54796964,0.547124,0.54627836,0.54543275,0.54458714,0.54374146,0.54289585,0.54205024,0.5412046,0.54035896,0.53951335,0.5386677,0.53782207,0.53697646,0.5361308,0.5352852,0.53443956,0.5335939,0.5327483,0.5319026,0.531057,0.5302114,0.5293657,0.5285201,0.5276745,0.5268288,0.5259832,0.5251376,0.52429193,0.5234463,0.5226007,0.52175504,0.5209094,0.5200638,0.51921815,0.51837254,0.51752687,0.51668125,0.51583564,0.51499,0.51414436,0.51329875,0.5124531,0.51160747,0.51076186,0.5099162,0.5090706,0.50822496,0.5073793,0.5065337,0.5056881,0.5048424,0.5039968,0.5031512,0.5023055,0.5014599,0.5006142,0.9995372,0.99784595,0.9961547,0.99446344,0.99277216,0.99108094,0.98938966,0.9876984,0.98600715,0.9843159,0.9826246,0.9809333,0.9792421,0.9775508,0.9758595,0.9741683,0.972477,0.97078574,0.9690945,0.96740323,0.96571195,0.96402067,0.96232945,0.96063817,0.9589469,0.95725566,0.9555644,0.9538731,0.9521819,0.9504906,0.9487993,0.94710803,0.9454168,0.9437255,0.94203424,0.940343,0.93865174,0.93696046,0.9352692,0.93357795,0.9318867,0.9301954,0.92850417,0.9268129,0.9251216,0.9234304,0.9217391,0.9200478,0.91835654,0.9166653,0.91497403,0.91328275,0.91159153,0.90990025,0.90820897,0.90651774,0.90482646,0.9031352,0.9014439,0.8997527,0.8980614,0.8963701,0.8946789,0.8929876,0.8912963,0.8896051,0.8879138,0.88622254,0.88453126,0.88284004,0.88114876,0.8794575,0.87776625,0.87607497,0.8743837,0.8726924,0.8710012,0.8693099,0.8676186,0.8659274,0.8642361,0.86254483,0.8608536,0.85916233,0.85747105,0.85577977,0.85408854,0.85239726,0.850706,0.84901476,0.8473235,0.8456322,0.843941,0.8422497,0.8405584,0.8388671,0.8371759,0.8354846,0.83379334,0.8321021,0.83041084,0.82871956,0.82702833,0.82533705,0.8236458,0.8219545,0.82026327,0.818572,0.8168807,0.8151895,0.8134982,0.8118069,0.81011564,0.8084244,0.80673313,0.80504185,0.8033506,0.80165935,0.79996806,0.79827684,0.79658556,0.7948943,0.793203,0.7915118,0.7898205,0.7881292,0.786438,0.7847467,0.7830554,0.7813642,0.7796729,0.77798164,0.77629036,0.77459913,0.77290785,0.7712166,0.76952535,0.76783407,0.7661428,0.76445156,0.7627603,0.761069,0.7593777,0.7576865,0.7559952,0.75430393,0.7526127,0.7509214,0.74923015,0.74753886,0.74584764,0.74415636,0.7424651,0.74077386,0.7390826,0.7373913,0.7357001,0.7340088,0.7323175,0.7306262,0.728935,0.7272437,0.72555244,0.7238612,0.72216994,0.72047865,0.71878743,0.71709615,0.71540487,0.7137136,0.71202236,0.7103311,0.7086398,0.7069486,0.7052573,0.703566,0.7018748,0.7001835,0.6984922,0.69680095,0.6951097,0.69341844,0.69172716,0.69003594,0.68834466,0.6866534,0.6849621,0.6832709,0.6815796,0.6798883,0.6781971,0.6765058,0.6748145,0.6731233,0.671432,0.66974074,0.66804945,0.66635823,0.66466695,0.66297567,0.66128445,0.65959316,0.6579019,0.65621066,0.6545194,0.6528281,0.6511368,0.6494456,0.6477543,0.646063,0.6443718,0.6426805,0.64098924,0.639298,0.63760674,0.63591546,0.6342242,0.63253295,0.6308417,0.6291504,0.62745917,0.6257679,0.6240766,0.6223853,0.6206941,0.6190028,0.61731154,0.6156203,0.61392903,0.61223775,0.6105465,0.60885525,0.60716397,0.6054727,0.60378146,0.6020902,0.6003989,0.5987077,0.5970164,0.5953251,0.5936339,0.5919426,0.5902513,0.58856004,0.5868688,0.58517754,0.58348626,0.58179504,0.58010375,0.5784125,0.57672125,0.57502997,0.5733387,0.5716474,0.5699562,0.5682649,0.5665736,0.5648824,0.5631911,0.56149983,0.55980855,0.55811733,0.55642605,0.55473477,0.55304354,0.55135226,0.549661,0.54796976,0.5462785,0.5445872,0.5428959,0.5412047,0.5395134,0.5378221,0.5361309,0.5344396,0.53274834,0.5310571,0.52936584,0.52767456,0.5259833,0.52429205,0.52260077,0.5209095,0.51921827,0.517527,0.5158357,0.5141445,0.5124532,0.5107619,0.50907063,0.5073794,0.50568813,0.50399685,0.5023056,0.50061435,0.9978461,0.9944636,0.9910811,0.98769855,0.98431605,0.9809335,0.977551,0.9741685,0.9707859,0.9674034,0.96402085,0.96063834,0.9572558,0.9538733,0.9504908,0.9471082,0.9437257,0.94034314,0.93696064,0.93357813,0.93019557,0.92681307,0.9234305,0.920048,0.9166655,0.91328293,0.9099004,0.90651786,0.90313536,0.89975286,0.8963703,0.8929878,0.8896052,0.8862227,0.8828402,0.87945765,0.87607515,0.8726926,0.8693101,0.8659276,0.862545,0.8591625,0.85577995,0.85239744,0.84901494,0.8456324,0.8422499,0.8388673,0.8354848,0.83210224,0.82871974,0.82533723,0.82195467,0.81857216,0.8151896,0.8118071,0.8084246,0.805042,0.8016595,0.79827696,0.79489446,0.79151195,0.7881294,0.7847469,0.7813643,0.7779818,0.7745993,0.77121675,0.76783425,0.7644517,0.7610692,0.7576867,0.7543041,0.7509216,0.74753904,0.74415654,0.74077404,0.7373915,0.73400897,0.7306264,0.7272439,0.7238614,0.72047883,0.7170963,0.71371377,0.71033126,0.7069487,0.7035662,0.7001837,0.6968011,0.6934186,0.69003606,0.68665355,0.68327105,0.6798885,0.676506,0.6731234,0.6697409,0.6663584,0.66297585,0.65959334,0.6562108,0.6528283,0.6494458,0.6460632,0.6426807,0.63929814,0.63591564,0.63253313,0.62915057,0.62576807,0.6223855,0.619003,0.6156205,0.61223793,0.6088554,0.60547286,0.60209036,0.5987078,0.5953253,0.5919428,0.5885602,0.5851777,0.58179516,0.57841265,0.57503015,0.5716476,0.5682651,0.5648825,0.5615,0.5581175,0.55473495,0.55135244,0.5479699,0.5445874,0.54120487,0.5378223,0.5344398,0.53105724,0.52767473,0.52429223,0.52090967,0.51752716,0.5141446,0.5107621,0.5073796,0.503997,0.5006145,0.994464,0.9876989,0.98093385,0.9741688,0.9674037,0.9606387,0.95387363,0.94710857,0.9403435,0.93357843,0.9268134,0.92004836,0.9132833,0.9065182,0.89975315,0.8929881,0.8862231,0.879458,0.87269294,0.8659279,0.8591628,0.8523978,0.84563273,0.83886766,0.8321026,0.8253375,0.8185725,0.81180745,0.8050424,0.7982773,0.79151225,0.78474724,0.7779822,0.7712171,0.76445204,0.757687,0.7509219,0.7441569,0.7373918,0.73062676,0.7238617,0.7170966,0.7103316,0.70356655,0.6968015,0.6900364,0.68327135,0.67650634,0.6697413,0.6629762,0.65621114,0.64944607,0.642681,0.635916,0.6291509,0.62238586,0.6156208,0.6088557,0.6020907,0.59532565,0.5885606,0.5817955,0.57503045,0.56826544,0.5615004,0.5547353,0.54797024,0.54120517,0.5344401,0.5276751,0.52091,0.51414496,0.5073799,0.5006148,0.98769957,0.9741695,0.96063936,0.9471092,0.93357915,0.920049,0.90651894,0.8929888,0.87945867,0.8659286,0.85239846,0.8388683,0.82533824,0.8118081,0.79827803,0.7847479,0.77121776,0.7576877,0.74415755,0.7306274,0.71709734,0.7035672,0.69003713,0.676507,0.66297686,0.6494468,0.63591665,0.6223865,0.60885644,0.5953263,0.5817962,0.5682661,0.55473596,0.5412059,0.52767575,0.5141456,0.50061554,0.9741708,0.9471106,0.9200504,0.8929902,0.8659299,0.8388697,0.8118095,0.78474927,0.75768906,0.7306288,0.7035686,0.67650837,0.64944816,0.6223879,0.5953277,0.56826746,0.54120725,0.514147,0.97417355,0.9200531,0.86593264,0.8118122,0.75769174,0.7035713,0.64945084,0.5953304,0.54120994,0.97417897,0.8659381,0.7576972,0.6494563,0.5412154,0.865949,0.6494672,0.8659708,0.8660143,0.7136238],"exp":[-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-126.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-127.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-128.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-129.0,-130.0,-130.0,-130.0,-130.0,-130.0,-130.0,-130.0,-130.0,-130.0,-130.0,-130.0,-130.0,-130.0,-130.0,-130.0,-130.0,-130.0,-130.0,-130.0,-130.0,-130.0,-130.0,-130.0,-130.0,-130.0,-130.0,-130.0,-130.0,-130.0,-130.0,-130.0,-130.0,-130.0,-130.0,-130.0,-130.0,-130.0,-131.0,-131.0,-131.0,-131.0,-131.0,-131.0,-131.0,-131.0,-131.0,-131.0,-131.0,-131.0,-131.0,-131.0,-131.0,-131.0,-131.0,-131.0,-132.0,-132.0,-132.0,-132.0,-132.0,-132.0,-132.0,-132.0,-132.0,-133.0,-133.0,-133.0,-133.0,-133.0,-134.0,-134.0,-135.0,-136.0,-149.0],"expected":[1.0e-38,9.99006e-39,9.980119e-39,9.970178e-39,9.960239e-39,9.950298e-39,9.940357e-39,9.930418e-39,9.920477e-39,9.910536e-39,9.900597e-39,9.890656e-39,9.880715e-39,9.870776e-39,9.860835e-39,9.850894e-39,9.840955e-39,9.831014e-39,9.821073e-39,9.811134e-39,9.801193e-39,9.791252e-39,9.781313e-39,9.771372e-39,9.761431e-39,9.751492e-39,9.741551e-39,9.73161e-39,9.72167e-39,9.71173e-39,9.701789e-39,9.69185e-39,9.681909e-39,9.671968e-39,9.662027e-39,9.652088e-39,9.642147e-39,9.632206e-39,9.622267e-39,9.612326e-39,9.602385e-39,9.592446e-39,9.582505e-39,9.572564e-39,9.562625e-39,9.552684e-39,9.542743e-39,9.532804e-39,9.522863e-39,9.512922e-39,9.502983e-39,9.493042e-39,9.483101e-39,9.473162e-39,9.463221e-39,9.45328e-39,9.44334e-39,9.4334e-39,9.423459e-39,9.41352e-39,9.403579e-39,9.393638e-39,9.383698e-39,9.373758e-39,9.363817e-39,9.353877e-39,9.343937e-39,9.333996e-39,9.324056e-39,9.314116e-39,9.304175e-39,9.294234e-39,9.284295e-39,9.274354e-39,9.264413e-39,9.254474e-39,9.244533e-39,9.234592e-39,9.224653e-39,9.214712e-39,9.204771e-39,9.194831e-39,9.18489e-39,9.17495e-39,9.16501e-39,9.15507e-39,9.145129e-39,9.13519e-39,9.125249e-39,9.115308e-39,9.105368e-39,9.095428e-39,9.085487e-39,9.075547e-39,9.065607e-39,9.055666e-39,9.045726e-39,9.035785e-39,9.025845e-39,9.015905e-39,9.005964e-39,8.996024e-39,8.986084e-39,8.976143e-39,8.966203e-39,8.956263e-39,8.946322e-39,8.936382e-39,8.926441e-39,8.916501e-39,8.90656e-39,8.89662e-39,8.88668e-39,8.87674e-39,8.866799e-39,8.85686e-39,8.846918e-39,8.836978e-39,8.827038e-39,8.817097e-39,8.807157e-39,8.797217e-39,8.787276e-39,8.777336e-39,8.767396e-39,8.757455e-39,8.747515e-39,8.737575e-39,8.727634e-39,8.717694e-39,8.707754e-39,8.697813e-39,8.687873e-39,8.677933e-39,8.667992e-39,8.658051e-39,8.648112e-39,8.638171e-39,8.62823e-39,8.618291e-39,8.60835e-39,8.59841e-39,8.58847e-39,8.578529e-39,8.568588e-39,8.558648e-39,8.548708e-39,8.538767e-39,8.528827e-39,8.518887e-39,8.508946e-39,8.499006e-39,8.489066e-39,8.479125e-39,8.469184e-39,8.459245e-39,8.449304e-39,8.439363e-39,8.429424e-39,8.419483e-39,8.409542e-39,8.399603e-39,8.389662e-39,8.379721e-39,8.369782e-39,8.359841e-39,8.3499e-39,8.339961e-39,8.33002e-39,8.32008e-39,8.31014e-39,8.300199e-39,8.290258e-39,8.280319e-39,8.270378e-39,8.260437e-39,8.250498e-39,8.240557e-39,8.230616e-39,8.220677e-39,8.210736e-39,8.200795e-39,8.190854e-39,8.180915e-39,8.170974e-39,8.161033e-39,8.151094e-39,8.141153e-39,8.131212e-39,8.121273e-39,8.111332e-39,8.101391e-39,8.091452e-39,8.081511e-39,8.07157e-39,8.061631e-39,8.05169e-39,8.041749e-39,8.03181e-39,8.021869e-39,8.011928e-39,8.001989e-39,7.992048e-39,7.982107e-39,7.972168e-39,7.962227e-39,7.952286e-39,7.942347e-39,7.932406e-39,7.922465e-39,7.912526e-39,7.902585e-39,7.892644e-39,7.882705e-39,7.872764e-39,7.862823e-39,7.852884e-39,7.842943e-39,7.833002e-39,7.823061e-39,7.813122e-39,7.803181e-39,7.79324e-39,7.783301e-39,7.77336e-39,7.763419e-39,7.75348e-39,7.743539e-39,7.733598e-39,7.723659e-39,7.713718e-39,7.703777e-39,7.693838e-39,7.683897e-39,7.673956e-39,7.664017e-39,7.654076e-39,7.644135e-39,7.634196e-39,7.624255e-39,7.614314e-39,7.604375e-39,7.594434e-39,7.584493e-39,7.574553e-39,7.564613e-39,7.554672e-39,7.544732e-39,7.534792e-39,7.524851e-39,7.514911e-39,7.50497e-39,7.49503e-39,7.48509e-39,7.47515e-39,7.465209e-39,7.455268e-39,7.445329e-39,7.435388e-39,7.425447e-39,7.415508e-39,7.405567e-39,7.395626e-39,7.385686e-39,7.375746e-39,7.365805e-39,7.355865e-39,7.345925e-39,7.335984e-39,7.326044e-39,7.316104e-39,7.306163e-39,7.296223e-39,7.286283e-39,7.276342e-39,7.266402e-39,7.256462e-39,7.246521e-39,7.236581e-39,7.22664e-39,7.2167e-39,7.20676e-39,7.19682e-39,7.186879e-39,7.176939e-39,7.166998e-39,7.157058e-39,7.147118e-39,7.137177e-39,7.127237e-39,7.117297e-39,7.107356e-39,7.097416e-39,7.087475e-39,7.077535e-39,7.067595e-39,7.057654e-39,7.047714e-39,7.037774e-39,7.027833e-39,7.017893e-39,7.007952e-39,6.998012e-39,6.988072e-39,6.978131e-39,6.96819e-39,6.958251e-39,6.94831e-39,6.93837e-39,6.92843e-39,6.91849e-39,6.908549e-39,6.898609e-39,6.888668e-39,6.878728e-39,6.868788e-39,6.858847e-39,6.848907e-39,6.838967e-39,6.829026e-39,6.819085e-39,6.809146e-39,6.799205e-39,6.789264e-39,6.779325e-39,6.769384e-39,6.759443e-39,6.749504e-39,6.739563e-39,6.729622e-39,6.719682e-39,6.709742e-39,6.699801e-39,6.68986e-39,6.679921e-39,6.66998e-39,6.66004e-39,6.6501e-39,6.640159e-39,6.630218e-39,6.620279e-39,6.610338e-39,6.600397e-39,6.590458e-39,6.580517e-39,6.570576e-39,6.560637e-39,6.550696e-39,6.540755e-39,6.530816e-39,6.520875e-39,6.510934e-39,6.500995e-39,6.491054e-39,6.481113e-39,6.471174e-39,6.461233e-39,6.451292e-39,6.441353e-39,6.431412e-39,6.421471e-39,6.411532e-39,6.401591e-39,6.39165e-39,6.381711e-39,6.37177e-39,6.361829e-39,6.351888e-39,6.341949e-39,6.332008e-39,6.322067e-39,6.312128e-39,6.302187e-39,6.292246e-39,6.282307e-39,6.272366e-39,6.262425e-39,6.252486e-39,6.242545e-39,6.232604e-39,6.222665e-39,6.212724e-39,6.202783e-39,6.192844e-39,6.182903e-39,6.172962e-39,6.163023e-39,6.153082e-39,6.143141e-39,6.133202e-39,6.123261e-39,6.11332e-39,6.10338e-39,6.09344e-39,6.083499e-39,6.07356e-39,6.063619e-39,6.053678e-39,6.043739e-39,6.033798e-39,6.023857e-39,6.013918e-39,6.003977e-39,5.994036e-39,5.984095e-39,5.974156e-39,5.964215e-39,5.954274e-39,5.944335e-39,5.934394e-39,5.924453e-39,5.914514e-39,5.904573e-39,5.894632e-39,5.884693e-39,5.874752e-39,5.864811e-39,5.854872e-39,5.844931e-39,5.83499e-39,5.82505e-39,5.81511e-39,5.805169e-39,5.79523e-39,5.785289e-39,5.775348e-39,5.765409e-39,5.755468e-39,5.745527e-39,5.735587e-39,5.725647e-39,5.715706e-39,5.705766e-39,5.695826e-39,5.685885e-39,5.675945e-39,5.666005e-39,5.656064e-39,5.646124e-39,5.636184e-39,5.626243e-39,5.616302e-39,5.606363e-39,5.596422e-39,5.586481e-39,5.576542e-39,5.5666e-39,5.55666e-39,5.54672e-39,5.53678e-39,5.526839e-39,5.5169e-39,5.506959e-39,5.497018e-39,5.487078e-39,5.477138e-39,5.467197e-39,5.457257e-39,5.447317e-39,5.437376e-39,5.427436e-39,5.417496e-39,5.407555e-39,5.397615e-39,5.387675e-39,5.377734e-39,5.367794e-39,5.357853e-39,5.347913e-39,5.337973e-39,5.328032e-39,5.318092e-39,5.308152e-39,5.298211e-39,5.28827e-39,5.278331e-39,5.26839e-39,5.25845e-39,5.248509e-39,5.23857e-39,5.228629e-39,5.218688e-39,5.208748e-39,5.198807e-39,5.188867e-39,5.178927e-39,5.168986e-39,5.159046e-39,5.149106e-39,5.139165e-39,5.129225e-39,5.119285e-39,5.109344e-39,5.099404e-39,5.089464e-39,5.079523e-39,5.069583e-39,5.059643e-39,5.049702e-39,5.039762e-39,5.029822e-39,5.019881e-39,5.00994e-39,5.000001e-39,4.99006e-39,4.98012e-39,4.97018e-39,4.960239e-39,4.950298e-39,4.940359e-39,4.930418e-39,4.920477e-39,4.910538e-39,4.900597e-39,4.890656e-39,4.880716e-39,4.870776e-39,4.860835e-39,4.850895e-39,4.840955e-39,4.831014e-39,4.821073e-39,4.811134e-39,4.801193e-39,4.791252e-39,4.781313e-39,4.771372e-39,4.761431e-39,4.751492e-39,4.741551e-39,4.73161e-39,4.721671e-39,4.71173e-39,4.70179e-39,4.69185e-39,4.681909e-39,4.671968e-39,4.662029e-39,4.652088e-39,4.642147e-39,4.632208e-39,4.622267e-39,4.612326e-39,4.602387e-39,4.592446e-39,4.582505e-39,4.572566e-39,4.562625e-39,4.552684e-39,4.542745e-39,4.532804e-39,4.522863e-39,4.512922e-39,4.502983e-39,4.493042e-39,4.483101e-39,4.473162e-39,4.463221e-39,4.45328e-39,4.443341e-39,4.4334e-39,4.423459e-39,4.41352e-39,4.403579e-39,4.393638e-39,4.383699e-39,4.373758e-39,4.363817e-39,4.353878e-39,4.343937e-39,4.333996e-39,4.324057e-39,4.314116e-39,4.304175e-39,4.294236e-39,4.284295e-39,4.274354e-39,4.264415e-39,4.254474e-39,4.244533e-39,4.234594e-39,4.224653e-39,4.214712e-39,4.204773e-39,4.194832e-39,4.184891e-39,4.174952e-39,4.165011e-39,4.15507e-39,4.145129e-39,4.13519e-39,4.125249e-39,4.115308e-39,4.105369e-39,4.095428e-39,4.085487e-39,4.075548e-39,4.065607e-39,4.055666e-39,4.045727e-39,4.035786e-39,4.025845e-39,4.015906e-39,4.005965e-39,3.996024e-39,3.986085e-39,3.976144e-39,3.966203e-39,3.956264e-39,3.946323e-39,3.936382e-39,3.926443e-39,3.916502e-39,3.906561e-39,3.896621e-39,3.88668e-39,3.87674e-39,3.8668e-39,3.85686e-39,3.846919e-39,3.83698e-39,3.827039e-39,3.817098e-39,3.807158e-39,3.797218e-39,3.787277e-39,3.777336e-39,3.767397e-39,3.757456e-39,3.747515e-39,3.737575e-39,3.727635e-39,3.717694e-39,3.707754e-39,3.697814e-39,3.687873e-39,3.677933e-39,3.667993e-39,3.658052e-39,3.648112e-39,3.638172e-39,3.628231e-39,3.618291e-39,3.60835e-39,3.59841e-39,3.58847e-39,3.57853e-39,3.568589e-39,3.558649e-39,3.548708e-39,3.538768e-39,3.528828e-39,3.518887e-39,3.508947e-39,3.499007e-39,3.489066e-39,3.479126e-39,3.469186e-39,3.459245e-39,3.449305e-39,3.439365e-39,3.429424e-39,3.419484e-39,3.409543e-39,3.399603e-39,3.389663e-39,3.379722e-39,3.369782e-39,3.359841e-39,3.3499e-39,3.339961e-39,3.33002e-39,3.32008e-39,3.31014e-39,3.3002e-39,3.290259e-39,3.280319e-39,3.270378e-39,3.260438e-39,3.250498e-39,3.240557e-39,3.230617e-39,3.220677e-39,3.210736e-39,3.200796e-39,3.190856e-39,3.180915e-39,3.170974e-39,3.161035e-39,3.151094e-39,3.141153e-39,3.131214e-39,3.121273e-39,3.111332e-39,3.101393e-39,3.091452e-39,3.081511e-39,3.071572e-39,3.061631e-39,3.05169e-39,3.04175e-39,3.03181e-39,3.02187e-39,3.011928e-39,3.001989e-39,2.992048e-39,2.982107e-39,2.972168e-39,2.962227e-39,2.952286e-39,2.942347e-39,2.932406e-39,2.922465e-39,2.912526e-39,2.902585e-39,2.892644e-39,2.882705e-39,2.872764e-39,2.862823e-39,2.852884e-39,2.842943e-39,2.833002e-39,2.823063e-39,2.813122e-39,2.803181e-39,2.793242e-39,2.783301e-39,2.77336e-39,2.763421e-39,2.75348e-39,2.743539e-39,2.7336e-39,2.723659e-39,2.713718e-39,2.703779e-39,2.693838e-39,2.683897e-39,2.673956e-39,2.664017e-39,2.654076e-39,2.644135e-39,2.634196e-39,2.624255e-39,2.614314e-39,2.604375e-39,2.594434e-39,2.584493e-39,2.574554e-39,2.564613e-39,2.554672e-39,2.544733e-39,2.534792e-39,2.524851e-39,2.514912e-39,2.504971e-39,2.49503e-39,2.485091e-39,2.47515e-39,2.465209e-39,2.45527e-39,2.445329e-39,2.435388e-39,2.425449e-39,2.415508e-39,2.405567e-39,2.395628e-39,2.385687e-39,2.375746e-39,2.365807e-39,2.355866e-39,2.345925e-39,2.335986e-39,2.326045e-39,2.316104e-39,2.306163e-39,2.296224e-39,2.286283e-39,2.276342e-39,2.266403e-39,2.256462e-39,2.246521e-39,2.236582e-39,2.226641e-39,2.2167e-39,2.20676e-39,2.19682e-39,2.186879e-39,2.17694e-39,2.166999e-39,2.157058e-39,2.147119e-39,2.137178e-39,2.127237e-39,2.117298e-39,2.107357e-39,2.097416e-39,2.087476e-39,2.077536e-39,2.067595e-39,2.057655e-39,2.047715e-39,2.037774e-39,2.027834e-39,2.017894e-39,2.007953e-39,1.998013e-39,1.988073e-39,1.978132e-39,1.968192e-39,1.958252e-39,1.948311e-39,1.93837e-39,1.92843e-39,1.91849e-39,1.908549e-39,1.89861e-39,1.888669e-39,1.878728e-39,1.868788e-39,1.858848e-39,1.848907e-39,1.838967e-39,1.829027e-39,1.819086e-39,1.809146e-39,1.799206e-39,1.789265e-39,1.779325e-39,1.769385e-39,1.759444e-39,1.749504e-39,1.739564e-39,1.729623e-39,1.719683e-39,1.709742e-39,1.699802e-39,1.689862e-39,1.679921e-39,1.66998e-39,1.660041e-39,1.6501e-39,1.64016e-39,1.63022e-39,1.62028e-39,1.610339e-39,1.600399e-39,1.590458e-39,1.580518e-39,1.570577e-39,1.560637e-39,1.550696e-39,1.540756e-39,1.530816e-39,1.520875e-39,1.510935e-39,1.500995e-39,1.491054e-39,1.481114e-39,1.471174e-39,1.461233e-39,1.451293e-39,1.441353e-39,1.431412e-39,1.421472e-39,1.411532e-39,1.401591e-39,1.39165e-39,1.381711e-39,1.37177e-39,1.36183e-39,1.35189e-39,1.341949e-39,1.332008e-39,1.322069e-39,1.312128e-39,1.302187e-39,1.292248e-39,1.282307e-39,1.272366e-39,1.262427e-39,1.252486e-39,1.242545e-39,1.232605e-39,1.222665e-39,1.212724e-39,1.202784e-39,1.192844e-39,1.182903e-39,1.172962e-39,1.163023e-39,1.153082e-39,1.143141e-39,1.133202e-39,1.123261e-39,1.11332e-39,1.103381e-39,1.09344e-39,1.0835e-39,1.07356e-39,1.063619e-39,1.053678e-39,1.043739e-39,1.033798e-39,1.023857e-39,1.013918e-39,1.003977e-39,9.94036e-40,9.84097e-40,9.74156e-40,9.64215e-40,9.54276e-40,9.44335e-40,9.34394e-40,9.24455e-40,9.14514e-40,9.04573e-40,8.94634e-40,8.84693e-40,8.74752e-40,8.64811e-40,8.54872e-40,8.44931e-40,8.3499e-40,8.25051e-40,8.1511e-40,8.05169e-40,7.9523e-40,7.85289e-40,7.75348e-40,7.65409e-40,7.55468e-40,7.45527e-40,7.35588e-40,7.25647e-40,7.15706e-40,7.05767e-40,6.95826e-40,6.85885e-40,6.75946e-40,6.66005e-40,6.56064e-40,6.46125e-40,6.36184e-40,6.26243e-40,6.16304e-40,6.06363e-40,5.96422e-40,5.86483e-40,5.76542e-40,5.66601e-40,5.56662e-40,5.46721e-40,5.3678e-40,5.2684e-40,5.169e-40,5.06959e-40,4.97018e-40,4.87079e-40,4.77138e-40,4.67197e-40,4.57258e-40,4.47317e-40,4.37376e-40,4.27437e-40,4.17496e-40,4.07555e-40,3.97616e-40,3.87675e-40,3.77734e-40,3.67795e-40,3.57854e-40,3.47913e-40,3.37974e-40,3.28033e-40,3.18092e-40,3.08153e-40,2.98212e-40,2.88271e-40,2.78332e-40,2.6839e-40,2.5845e-40,2.4851e-40,2.3857e-40,2.28629e-40,2.1869e-40,2.08749e-40,1.98808e-40,1.88868e-40,1.78928e-40,1.68987e-40,1.59047e-40,1.49107e-40,1.39166e-40,1.29225e-40,1.19286e-40,1.09345e-40,9.9404e-41,8.9464e-41,7.9524e-41,6.9583e-41,5.9643e-41,4.9703e-41,3.9762e-41,2.9822e-41,1.9882e-41,9.941e-42,1.0e-45]} diff --git a/lib/node_modules/@stdlib/math/base/special/ldexpf/test/test.js b/lib/node_modules/@stdlib/math/base/special/ldexpf/test/test.js new file mode 100644 index 00000000000..f0d805acf54 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/ldexpf/test/test.js @@ -0,0 +1,221 @@ +/** +* @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 PINF = require( '@stdlib/constants/float32/pinf' ); +var NINF = require( '@stdlib/constants/float32/ninf' ); +var isNegativeZerof = require( '@stdlib/math/base/assert/is-negative-zerof' ); +var isPositiveZerof = require( '@stdlib/math/base/assert/is-positive-zerof' ); +var EPS = require( '@stdlib/constants/float32/eps' ); +var float64ToFloat32 = require( '@stdlib/number/float64/base/to-float32' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var absf = require( '@stdlib/math/base/special/absf' ); +var ldexpf = require( './../lib' ); + + +// FIXTURES // + +var small = require( './fixtures/julia/small.json' ); +var medium = require( './fixtures/julia/medium.json' ); +var large = require( './fixtures/julia/large.json' ); +var subnormal = require( './fixtures/julia/subnormal.json' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof ldexpf, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function multiplies a number by an integer power of two (small values)', function test( t ) { + var expected; + var delta; + var frac; + var exp; + var tol; + var v; + var i; + var e; + + expected = small.expected; + frac = small.frac; + exp = small.exp; + for ( i = 0; i < frac.length; i++ ) { + e = float64ToFloat32( expected[ i ] ); + v = ldexpf( frac[i], exp[i] ); + if ( v === e ) { + t.equal( v, e, 'frac: '+frac[i]+'; exp: '+exp[i]+'; expected: '+e ); + } else { + delta = absf( v - e ); + tol = 1.2 * EPS * absf( e ); + t.equal( delta <= tol, true, 'within tolerance. frac: '+frac[i]+'; exp: '+exp[i]+'. v: '+v+'. E: '+e+'. Δ: '+delta+'. Tolerance: '+tol+'.' ); + } + } + t.end(); +}); + +tape( 'the function multiplies a number by an integer power of two (medium values)', function test( t ) { + var expected; + var delta; + var frac; + var exp; + var tol; + var v; + var i; + var e; + + expected = medium.expected; + frac = medium.frac; + exp = medium.exp; + for ( i = 0; i < frac.length; i++ ) { + e = float64ToFloat32( expected[ i ] ); + v = ldexpf( frac[i], exp[i] ); + if ( v === e ) { + t.equal( v, e, 'frac: '+frac[i]+'; exp: '+exp[i]+'; expected: '+e ); + } else { + delta = absf( v - e ); + tol = EPS * absf( e ); + t.equal( delta <= tol, true, 'within tolerance. frac: '+frac[i]+'; exp: '+exp[i]+'. v: '+v+'. E: '+e+'. Δ: '+delta+'. Tolerance: '+tol+'.' ); + } + } + t.end(); +}); + +tape( 'the function multiplies a number by an integer power of two (large values)', function test( t ) { + var expected; + var delta; + var frac; + var exp; + var tol; + var v; + var i; + var e; + + expected = large.expected; + frac = large.frac; + exp = large.exp; + for ( i = 0; i < frac.length; i++ ) { + e = float64ToFloat32( expected[ i ] ); + v = ldexpf( frac[i], exp[i] ); + if ( v === e ) { + t.equal( v, e, 'frac: '+frac[i]+'; exp: '+exp[i]+'; expected: '+e ); + } else { + delta = absf( v - e ); + tol = 1.0 * EPS * absf( e ); + t.equal( delta <= tol, true, 'within tolerance. frac: '+frac[i]+'; exp: '+exp[i]+'. v: '+v+'. E: '+e+'. Δ: '+delta+'. Tolerance: '+tol+'.' ); + } + } + t.end(); +}); + +tape( 'the function multiplies a number by an integer power of two (subnormals)', function test( t ) { + var expected; + var delta; + var frac; + var exp; + var tol; + var v; + var i; + var e; + + expected = subnormal.expected; + frac = subnormal.frac; + exp = subnormal.exp; + for ( i = 0; i < frac.length; i++ ) { + e = float64ToFloat32( expected[ i ] ); + v = ldexpf( frac[i], exp[i] ); + if ( v === e ) { + t.equal( v, e, 'frac: '+frac[i]+'; exp: '+exp[i]+'; expected: '+e ); + } else { + delta = absf( v - e ); + tol = 15.0 * EPS * absf( e ); + t.equal( delta <= tol, true, 'within tolerance. frac: '+frac[i]+'; exp: '+exp[i]+'. v: '+v+'. E: '+e+'. Δ: '+delta+'. Tolerance: '+tol+'.' ); + } + } + t.end(); +}); + +tape( 'if provided a fraction equal to `+0`, the function returns `+0`', function test( t ) { + var v = ldexpf( 0.0, 10 ); + t.equal( isPositiveZerof( v ), true, 'returns +0' ); + t.end(); +}); + +tape( 'if provided a fraction equal to `-0`, the function returns `-0`', function test( t ) { + var v = ldexpf( -0.0, 10 ); + t.equal( isNegativeZerof( v ), true, 'returns -0' ); + t.end(); +}); + +tape( 'if provided a fraction equal to `+infinity`, the function returns `+infinity`', function test( t ) { + var v = ldexpf( PINF, 10 ); + t.equal( v, PINF, 'returns +infinity' ); + t.end(); +}); + +tape( 'if provided a fraction equal to `-infinity`, the function returns `-infinity`', function test( t ) { + var v = ldexpf( NINF, 10 ); + t.equal( v, NINF, 'returns -infinity' ); + t.end(); +}); + +tape( 'if provided an exponent equal to `0`, the function returns the provided fraction', function test( t ) { + var v = ldexpf( 3.0, 0 ); + t.equal( v, 3.0, 'returns expected value' ); + t.end(); +}); + +tape( 'if provided a fraction equal to `NaN`, the function returns `NaN`', function test( t ) { + var v = ldexpf( NaN, 10 ); + t.equal( isnanf( v ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function returns `0` if the result of multiplying a positive fraction and an integer power of two underflows', function test( t ) { + // Min subnormal ~1.4e-45 ~ 2**-149 + var v = ldexpf( 0.005, -148 ); + t.equal( isPositiveZerof( v ), true, 'returns +0' ); + t.end(); +}); + +tape( 'the function returns `-0` if the result of multiplying a negative fraction and an integer power of two underflows', function test( t ) { + // Min subnormal ~1.4e-45 ~ 2**-149 + var v = ldexpf( -0.005, -148 ); + t.equal( isNegativeZerof( v ), true, 'returns -0' ); + t.end(); +}); + +tape( 'the function returns `+infinity` if the result of multiplying a positive fraction and an integer power of two overflows', function test( t ) { + // Max double ~1e38 ~ 2**126 + var v = ldexpf( 1.0e3, 124 ); + t.equal( v, PINF, 'returns +infinity' ); + t.end(); +}); + +tape( 'the function returns `-infinity` if the result of multiplying a negative fraction and an integer power of two overflows', function test( t ) { + // Max double ~1e38 ~ 2**126 + var v = ldexpf( -1.0e3, 124 ); + t.equal( v, NINF, 'returns -infinity' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/math/base/special/ldexpf/test/test.native.js b/lib/node_modules/@stdlib/math/base/special/ldexpf/test/test.native.js new file mode 100644 index 00000000000..7569520bb33 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/ldexpf/test/test.native.js @@ -0,0 +1,230 @@ +/** +* @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 PINF = require( '@stdlib/constants/float32/pinf' ); +var NINF = require( '@stdlib/constants/float32/ninf' ); +var isNegativeZerof = require( '@stdlib/math/base/assert/is-negative-zerof' ); +var isPositiveZerof = require( '@stdlib/math/base/assert/is-positive-zerof' ); +var EPS = require( '@stdlib/constants/float32/eps' ); +var float64ToFloat32 = require( '@stdlib/number/float64/base/to-float32' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var absf = require( '@stdlib/math/base/special/absf' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// FIXTURES // + +var small = require( './fixtures/julia/small.json' ); +var medium = require( './fixtures/julia/medium.json' ); +var large = require( './fixtures/julia/large.json' ); +var subnormal = require( './fixtures/julia/subnormal.json' ); + + +// VARIABLES // + +var ldexpf = tryRequire( resolve( __dirname, './../lib/native.js' ) ); +var opts = { + 'skip': ( ldexpf instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof ldexpf, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function multiplies a number by an integer power of two (small values)', opts, function test( t ) { + var expected; + var delta; + var frac; + var exp; + var tol; + var v; + var i; + var e; + + expected = small.expected; + frac = small.frac; + exp = small.exp; + for ( i = 0; i < frac.length; i++ ) { + e = float64ToFloat32( expected[ i ] ); + v = ldexpf( frac[i], exp[i] ); + if ( v === e ) { + t.equal( v, e, 'frac: '+frac[i]+'; exp: '+exp[i]+'; expected: '+e ); + } else { + delta = absf( v - e ); + tol = 1.2 * EPS * absf( e ); + t.equal( delta <= tol, true, 'within tolerance. frac: '+frac[i]+'; exp: '+exp[i]+'. v: '+v+'. E: '+e+'. Δ: '+delta+'. Tolerance: '+tol+'.' ); + } + } + t.end(); +}); + +tape( 'the function multiplies a number by an integer power of two (medium values)', opts, function test( t ) { + var expected; + var delta; + var frac; + var exp; + var tol; + var v; + var i; + var e; + + expected = medium.expected; + frac = medium.frac; + exp = medium.exp; + for ( i = 0; i < frac.length; i++ ) { + e = float64ToFloat32( expected[ i ] ); + v = ldexpf( frac[i], exp[i] ); + if ( v === e ) { + t.equal( v, e, 'frac: '+frac[i]+'; exp: '+exp[i]+'; expected: '+e ); + } else { + delta = absf( v - e ); + tol = EPS * absf( e ); + t.equal( delta <= tol, true, 'within tolerance. frac: '+frac[i]+'; exp: '+exp[i]+'. v: '+v+'. E: '+e+'. Δ: '+delta+'. Tolerance: '+tol+'.' ); + } + } + t.end(); +}); + +tape( 'the function multiplies a number by an integer power of two (large values)', opts, function test( t ) { + var expected; + var delta; + var frac; + var exp; + var tol; + var v; + var i; + var e; + + expected = large.expected; + frac = large.frac; + exp = large.exp; + for ( i = 0; i < frac.length; i++ ) { + e = float64ToFloat32( expected[ i ] ); + v = ldexpf( frac[i], exp[i] ); + if ( v === e ) { + t.equal( v, e, 'frac: '+frac[i]+'; exp: '+exp[i]+'; expected: '+e ); + } else { + delta = absf( v - e ); + tol = 1.0 * EPS * absf( e ); + t.equal( delta <= tol, true, 'within tolerance. frac: '+frac[i]+'; exp: '+exp[i]+'. v: '+v+'. E: '+e+'. Δ: '+delta+'. Tolerance: '+tol+'.' ); + } + } + t.end(); +}); + +tape( 'the function multiplies a number by an integer power of two (subnormals)', opts, function test( t ) { + var expected; + var delta; + var frac; + var exp; + var tol; + var v; + var i; + var e; + + expected = subnormal.expected; + frac = subnormal.frac; + exp = subnormal.exp; + for ( i = 0; i < frac.length; i++ ) { + e = float64ToFloat32( expected[ i ] ); + v = ldexpf( frac[i], exp[i] ); + if ( v === e ) { + t.equal( v, e, 'frac: '+frac[i]+'; exp: '+exp[i]+'; expected: '+e ); + } else { + delta = absf( v - e ); + tol = 15.0 * EPS * absf( e ); + t.equal( delta <= tol, true, 'within tolerance. frac: '+frac[i]+'; exp: '+exp[i]+'. v: '+v+'. E: '+e+'. Δ: '+delta+'. Tolerance: '+tol+'.' ); + } + } + t.end(); +}); + +tape( 'if provided a fraction equal to `+0`, the function returns `+0`', opts, function test( t ) { + var v = ldexpf( 0.0, 10 ); + t.equal( isPositiveZerof( v ), true, 'returns +0' ); + t.end(); +}); + +tape( 'if provided a fraction equal to `-0`, the function returns `-0`', opts, function test( t ) { + var v = ldexpf( -0.0, 10 ); + t.equal( isNegativeZerof( v ), true, 'returns -0' ); + t.end(); +}); + +tape( 'if provided a fraction equal to `+infinity`, the function returns `+infinity`', opts, function test( t ) { + var v = ldexpf( PINF, 10 ); + t.equal( v, PINF, 'returns +infinity' ); + t.end(); +}); + +tape( 'if provided a fraction equal to `-infinity`, the function returns `-infinity`', opts, function test( t ) { + var v = ldexpf( NINF, 10 ); + t.equal( v, NINF, 'returns -infinity' ); + t.end(); +}); + +tape( 'if provided an exponent equal to `0`, the function returns the provided fraction', opts, function test( t ) { + var v = ldexpf( 3.0, 0 ); + t.equal( v, 3.0, 'returns expected value' ); + t.end(); +}); + +tape( 'if provided a fraction equal to `NaN`, the function returns `NaN`', opts, function test( t ) { + var v = ldexpf( NaN, 10 ); + t.equal( isnanf( v ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function returns `0` if the result of multiplying a positive fraction and an integer power of two underflows', opts, function test( t ) { + // Min subnormal ~1.4e-45 ~ 2**-149 + var v = ldexpf( 0.005, -148 ); + t.equal( isPositiveZerof( v ), true, 'returns +0' ); + t.end(); +}); + +tape( 'the function returns `-0` if the result of multiplying a negative fraction and an integer power of two underflows', opts, function test( t ) { + // Min subnormal ~1.4e-45 ~ 2**-149 + var v = ldexpf( -0.005, -148 ); + t.equal( isNegativeZerof( v ), true, 'returns -0' ); + t.end(); +}); + +tape( 'the function returns `+infinity` if the result of multiplying a positive fraction and an integer power of two overflows', opts, function test( t ) { + // Max double ~1e38 ~ 2**126 + var v = ldexpf( 1.0e3, 124 ); + t.equal( v, PINF, 'returns +infinity' ); + t.end(); +}); + +tape( 'the function returns `-infinity` if the result of multiplying a negative fraction and an integer power of two overflows', opts, function test( t ) { + // Max double ~1e38 ~ 2**126 + var v = ldexpf( -1.0e3, 124 ); + t.equal( v, NINF, 'returns -infinity' ); + t.end(); +});