diff --git a/lib/node_modules/@stdlib/math/base/special/trigammaf/LICENSE b/lib/node_modules/@stdlib/math/base/special/trigammaf/LICENSE new file mode 100644 index 000000000000..05757b1b8026 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/trigammaf/LICENSE @@ -0,0 +1,209 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +DEPENDENCIES & ATTRIBUTION + +The library links against the following external libraries or contains +implementations from the following external libraries, which have their own +licenses: + +* Boost + +Boost Software License - Version 1.0 - August 17th, 2003 + +Permission is hereby granted, free of charge, to any person or organization +obtaining a copy of the software and accompanying documentation covered by +this license (the "Software") to use, reproduce, display, distribute, +execute, and transmit the Software, and to prepare derivative works of the +Software, and to permit third-parties to whom the Software is furnished to +do so, all subject to the following: + +The copyright notices in the Software and this entire statement, including +the above license grant, this restriction and the following disclaimer, +must be included in all copies of the Software, in whole or in part, and +all derivative works of the Software, unless such copies or derivative +works are solely in the form of machine-executable object code generated by +a source language processor. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/lib/node_modules/@stdlib/math/base/special/trigammaf/README.md b/lib/node_modules/@stdlib/math/base/special/trigammaf/README.md new file mode 100644 index 000000000000..1bcf2e3a64a4 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/trigammaf/README.md @@ -0,0 +1,221 @@ + + +# Trigamma + +> [Trigamma][trigamma-function] function for a single-precision floating-point number. + +
+ +The [trigamma function][trigamma-function] `ψ^(1)` is the derivative of the [digamma function][digamma-function]. + + + +```math +\psi^{(1)}(x) =\frac{d}{dx} \Psi(x) = \sum_{k=0}^\infty \frac{1}{(k+x)^2} +``` + + + +
+ + + +
+ +## Usage + +```javascript +var trigammaf = require( '@stdlib/math/base/special/trigammaf' ); +``` + +#### trigammaf( x ) + +Evaluates the [trigamma function][trigamma-function] for a single-precision floating-point number. + +```javascript +var v = trigammaf( -2.5 ); +// returns ~9.539 + +v = trigammaf( 1.0 ); +// returns ~1.645 + +v = trigammaf( 10.0 ); +// returns ~0.105 +``` + +If `x` is `0` or a negative `integer`, the function returns `NaN`. + +```javascript +var v = trigammaf( 0.0 ); +// returns NaN + +v = trigammaf( -1.0 ); +// returns NaN + +v = trigammaf( -2.0 ); +// returns NaN +``` + +If provided `NaN`, the function returns `NaN`. + +```javascript +var v = trigammaf( NaN ); +// returns NaN +``` + +
+ + + +
+ +## Examples + + + +```javascript +var uniform = require( '@stdlib/random/array/uniform' ); +var logEachMap = require( '@stdlib/console/log-each-map' ); +var trigammaf = require( '@stdlib/math/base/special/trigammaf' ); + +var opts = { + 'dtype': 'float32' +}; +var x = uniform( 100, -50.0, 50.0, opts ); + +logEachMap( 'x: %0.4f, ψ^(1)(x): %0.4f', x, trigammaf ); +``` + +
+ + + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/math/base/special/trigammaf.h" +``` + +#### stdlib_base_trigammaf( x ) + +Evaluates the [trigamma function][trigamma-function] for a single-precision floating-point number. + +```c +float out = stdlib_base_trigammaf( -2.5f ); +// returns ~9.539f + +out = stdlib_base_trigammaf( 1.0f ); +// returns ~1.645f +``` + +The function accepts the following arguments: + +- **x**: `[in] float` input value. + +```c +float stdlib_base_trigammaf( const float x ); +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/math/base/special/trigammaf.h" +#include + +int main( void ) { + const float x[] = { 4.0f, -1.5f, -0.5f, 0.5f }; + + float y; + int i; + for ( i = 0; i < 4; i++ ) { + y = stdlib_base_trigammaf( x[ i ] ); + printf( "x: %f, ψ^(1)(x): %f\n", x[ i ], y ); + } +} +``` + +
+ + + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/math/base/special/trigammaf/benchmark/benchmark.js b/lib/node_modules/@stdlib/math/base/special/trigammaf/benchmark/benchmark.js new file mode 100644 index 000000000000..77ecf8b38566 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/trigammaf/benchmark/benchmark.js @@ -0,0 +1,55 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var EPS = require( '@stdlib/constants/float32/eps' ); +var pkg = require( './../package.json' ).name; +var trigammaf = require( './../lib' ); + + +// MAIN // + +bench( pkg, function benchmark( b ) { + var x; + var y; + var i; + + x = uniform( 100, EPS, 100.0, { + 'dtype': 'float32' + }); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = trigammaf( x[ i%x.length ] ); + if ( isnanf( y ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( y ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/math/base/special/trigammaf/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/math/base/special/trigammaf/benchmark/benchmark.native.js new file mode 100644 index 000000000000..c6c01d89df69 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/trigammaf/benchmark/benchmark.native.js @@ -0,0 +1,64 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var EPS = require( '@stdlib/constants/float32/eps' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var trigammaf = tryRequire( resolve( __dirname, './../lib/native.js' ) ); +var opts = { + 'skip': ( trigammaf instanceof Error ) +}; + + +// MAIN // + +bench( pkg+'::native', opts, function benchmark( b ) { + var x; + var y; + var i; + + x = uniform( 100, EPS, 100.0, { + 'dtype': 'float32' + }); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = trigammaf( x[ i%x.length ] ); + if ( isnanf( y ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( y ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/math/base/special/trigammaf/benchmark/c/native/Makefile b/lib/node_modules/@stdlib/math/base/special/trigammaf/benchmark/c/native/Makefile new file mode 100644 index 000000000000..a4bd7b38fd74 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/trigammaf/benchmark/c/native/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2025 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# 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/trigammaf/benchmark/c/native/benchmark.c b/lib/node_modules/@stdlib/math/base/special/trigammaf/benchmark/c/native/benchmark.c new file mode 100644 index 000000000000..7eea2b72505a --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/trigammaf/benchmark/c/native/benchmark.c @@ -0,0 +1,138 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* 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/trigammaf.h" +#include +#include +#include +#include +#include + +#define NAME "trigammaf" +#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 [min,max). +* +* @param min minimum value (inclusive) +* @param max maximum value (exclusive) +* @return random number +*/ +static float random_uniform( const float min, const float max ) { + float v = (float)rand() / ( (float)RAND_MAX + 1.0f ); + return min + ( v*(max-min) ); +} + +/** +* Runs a benchmark. +* +* @return elapsed time in seconds +*/ +static double benchmark( void ) { + float x[ 100 ]; + double elapsed; + double t; + float y; + int i; + + for ( i = 0; i < 100; i++ ) { + x[ i ] = random_uniform( -50.0f, 50.0f ); + } + + t = tic(); + for ( i = 0; i < ITERATIONS; i++ ) { + y = stdlib_base_trigammaf( x[ i%100 ] ); + if ( y != y ) { + printf( "should not return NaN\n" ); + break; + } + } + elapsed = tic() - t; + if ( y != y ) { + printf( "should not return NaN\n" ); + } + return elapsed; +} + +/** +* Main execution sequence. +*/ +int main( void ) { + double elapsed; + int i; + + // Use the current time to seed the random number generator: + srand( time( NULL ) ); + + print_version(); + for ( i = 0; i < REPEATS; i++ ) { + printf( "# c::native::%s\n", NAME ); + elapsed = benchmark(); + print_results( elapsed ); + printf( "ok %d benchmark finished\n", i+1 ); + } + print_summary( REPEATS, REPEATS ); +} diff --git a/lib/node_modules/@stdlib/math/base/special/trigammaf/binding.gyp b/lib/node_modules/@stdlib/math/base/special/trigammaf/binding.gyp new file mode 100644 index 000000000000..68a1ca11d160 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/trigammaf/binding.gyp @@ -0,0 +1,170 @@ +# @license Apache-2.0 +# +# Copyright (c) 2025 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# 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/trigammaf/docs/repl.txt b/lib/node_modules/@stdlib/math/base/special/trigammaf/docs/repl.txt new file mode 100644 index 000000000000..c9edaabe726a --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/trigammaf/docs/repl.txt @@ -0,0 +1,35 @@ + +{{alias}}( x ) + Evaluates the trigamma function for a single-precision floating-point + number. + + If `x` is `0` or a negative `integer`, the `function` returns `NaN`. + + If provided `NaN`, the `function` returns `NaN`. + + Parameters + ---------- + x: number + Input value. + + Returns + ------- + y: number + Function value. + + Examples + -------- + > var y = {{alias}}( -2.5 ) + ~9.539 + > y = {{alias}}( 1.0 ) + ~1.645 + > y = {{alias}}( 10.0 ) + ~0.105 + > y = {{alias}}( NaN ) + NaN + > y = {{alias}}( -1.0 ) + NaN + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/math/base/special/trigammaf/docs/types/index.d.ts b/lib/node_modules/@stdlib/math/base/special/trigammaf/docs/types/index.d.ts new file mode 100644 index 000000000000..725d21914830 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/trigammaf/docs/types/index.d.ts @@ -0,0 +1,52 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* 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 + +/** +* Evaluates the trigamma function for a single-precision floating-point number. +* +* @param x - input value +* @returns function value +* +* @example +* var v = trigammaf( -2.5 ); +* // returns ~9.539 +* +* @example +* var v = trigammaf( 1.0 ); +* // returns ~1.645 +* +* @example +* var v = trigammaf( 10.0 ); +* // returns ~0.105 +* +* @example +* var v = trigammaf( NaN ); +* // returns NaN +* +* @example +* var v = trigammaf( -1.0 ); +* // returns NaN +*/ +declare function trigammaf( x: number ): number; + + +// EXPORTS // + +export = trigammaf; diff --git a/lib/node_modules/@stdlib/math/base/special/trigammaf/docs/types/test.ts b/lib/node_modules/@stdlib/math/base/special/trigammaf/docs/types/test.ts new file mode 100644 index 000000000000..9c6c6f20e03d --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/trigammaf/docs/types/test.ts @@ -0,0 +1,44 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* 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 trigammaf = require( './index' ); + + +// TESTS // + +// The function returns a number... +{ + trigammaf( 8 ); // $ExpectType number +} + +// The compiler throws an error if the function is provided a value other than a number... +{ + trigammaf( true ); // $ExpectError + trigammaf( false ); // $ExpectError + trigammaf( null ); // $ExpectError + trigammaf( undefined ); // $ExpectError + trigammaf( '5' ); // $ExpectError + trigammaf( [] ); // $ExpectError + trigammaf( {} ); // $ExpectError + trigammaf( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided insufficient arguments... +{ + trigammaf(); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/math/base/special/trigammaf/examples/c/Makefile b/lib/node_modules/@stdlib/math/base/special/trigammaf/examples/c/Makefile new file mode 100644 index 000000000000..25ced822f96a --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/trigammaf/examples/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2025 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# 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/trigammaf/examples/c/example.c b/lib/node_modules/@stdlib/math/base/special/trigammaf/examples/c/example.c new file mode 100644 index 000000000000..48b9ab3334a8 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/trigammaf/examples/c/example.c @@ -0,0 +1,31 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* 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/trigammaf.h" +#include + +int main( void ) { + const float x[] = { 4.0f, -1.5f, -0.5f, 0.5f }; + + float y; + int i; + for ( i = 0; i < 4; i++ ) { + y = stdlib_base_trigammaf( x[ i ] ); + printf( "x: %f, ψ^(1)(x): %f\n", x[ i ], y ); + } +} diff --git a/lib/node_modules/@stdlib/math/base/special/trigammaf/examples/index.js b/lib/node_modules/@stdlib/math/base/special/trigammaf/examples/index.js new file mode 100644 index 000000000000..98fb6aa845ff --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/trigammaf/examples/index.js @@ -0,0 +1,30 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var uniform = require( '@stdlib/random/array/uniform' ); +var logEachMap = require( '@stdlib/console/log-each-map' ); +var trigammaf = require( './../lib' ); + +var opts = { + 'dtype': 'float32' +}; +var x = uniform( 100, -50.0, 50.0, opts ); + +logEachMap( 'x: %0.4f, ψ^(1)(x): %0.4f', x, trigammaf ); diff --git a/lib/node_modules/@stdlib/math/base/special/trigammaf/include.gypi b/lib/node_modules/@stdlib/math/base/special/trigammaf/include.gypi new file mode 100644 index 000000000000..ecfaf82a3279 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/trigammaf/include.gypi @@ -0,0 +1,53 @@ +# @license Apache-2.0 +# +# Copyright (c) 2025 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A GYP include file for building a Node.js native add-on. +# +# Main documentation: +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Source directory: + 'src_dir': './src', + + # Include directories: + 'include_dirs': [ + '=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "derivative", + "trigamma", + "gamma", + "gammaf", + "trigammaf", + "scalar", + "number", + "psi" + ] +} diff --git a/lib/node_modules/@stdlib/math/base/special/trigammaf/scripts/evalrational.js b/lib/node_modules/@stdlib/math/base/special/trigammaf/scripts/evalrational.js new file mode 100644 index 000000000000..d49b196b5291 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/trigammaf/scripts/evalrational.js @@ -0,0 +1,181 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* +* This script compiles modules for evaluating polynomial functions. If any polynomial coefficients change, this script should be rerun to update the compiled files. +*/ +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var readFileSync = require( '@stdlib/fs/read-file' ).sync; +var writeFileSync = require( '@stdlib/fs/write-file' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var compile = require( '@stdlib/math/base/tools/evalrational-compile' ); +var compileC = require( '@stdlib/math/base/tools/evalrational-compile-c' ); +var substringBefore = require( '@stdlib/string/substring-before' ); +var substringAfter = require( '@stdlib/string/substring-after' ); +var format = require( '@stdlib/string/format' ); + + +// VARIABLES // + +// Polynomial coefficients ordered in ascending degree... +var P12 = [ + -1.1093280605946045, + -3.8310674472619321, + -3.3703848401898283, + 0.28080574467981213, + 1.6638069578676164, + 0.64468386819102836 +]; +var Q12 = [ + 1.0, + 3.4535389668541151, + 4.5208926987851437, + 2.7012734178351534, + 0.64468798399785611, + -0.20314516859987728e-6 +]; +var P24 = [ + -0.13803835004508849e-7, + 0.50000049158540261, + 1.6077979838469348, + 2.5645435828098254, + 2.0534873203680393, + 0.74566981111565923 +]; +var Q24 = [ + 1.0, + 2.8822787662376169, + 4.1681660554090917, + 2.7853527819234466, + 0.74967671848044792, + -0.00057069112416246805 +]; +var P4INF = [ + 0.68947581948701249e-17, + 0.49999999999998975, + 1.0177274392923795, + 2.498208511343429, + 2.1921221359427595, + 1.5897035272532764, + 0.40154388356961734 +]; +var Q4INF = [ + 1.0, + 1.7021215452463932, + 4.4290431747556469, + 2.9745631894384922, + 2.3013614809773616, + 0.28360399799075752, + 0.022892987908906897 +]; + +// Header to add to output files: +var header = licenseHeader( 'Apache-2.0', 'js', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' +}); +header += '\n/* This is a generated file. Do not edit directly. */\n'; + + +// FUNCTIONS // + +/** +* Inserts a compiled function into file content. +* +* @private +* @param {string} text - source content +* @param {string} id - function identifier +* @param {string} str - function string +* @returns {string} updated content +*/ +function insert( text, id, str ) { + var before; + var after; + var begin; + var end; + + begin = '// BEGIN: '+id; + end = '// END: '+id; + + before = substringBefore( text, begin ); + after = substringAfter( text, end ); + + return format( '%s// BEGIN: %s\n\n%s\n%s%s', before, id, str, end, after ); +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var fpath; + var copts; + var opts; + var file; + var str; + + opts = { + 'encoding': 'utf8', + 'dtype': 'float32' + }; + + fpath = resolve( __dirname, '..', 'lib', 'rational_p12q12.js' ); + str = header + compile( P12, Q12, opts ); + writeFileSync( fpath, str, opts ); + + fpath = resolve( __dirname, '..', 'lib', 'rational_p24q24.js' ); + str = header + compile( P24, Q24, opts ); + writeFileSync( fpath, str, opts ); + + fpath = resolve( __dirname, '..', 'lib', 'rational_p4infq4inf.js' ); + str = header + compile( P4INF, Q4INF, opts ); + writeFileSync( fpath, str, opts ); + + copts = { + 'dtype': 'float', + 'name': '' + }; + + fpath = resolve( __dirname, '..', 'src', 'main.c' ); + file = readFileSync( fpath, opts ); + + copts.name = 'rational_p12q12'; + str = compileC( P12, Q12, copts ); + file = insert( file, copts.name, str ); + + copts.name = 'rational_p24q24'; + str = compileC( P24, Q24, copts ); + file = insert( file, copts.name, str ); + + copts.name = 'rational_p4infq4inf'; + str = compileC( P4INF, Q4INF, copts ); + file = insert( file, copts.name, str ); + + writeFileSync( fpath, file, opts ); +} + +main(); diff --git a/lib/node_modules/@stdlib/math/base/special/trigammaf/src/Makefile b/lib/node_modules/@stdlib/math/base/special/trigammaf/src/Makefile new file mode 100644 index 000000000000..7733b6180cb4 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/trigammaf/src/Makefile @@ -0,0 +1,70 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2025 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# 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/trigammaf/src/addon.c b/lib/node_modules/@stdlib/math/base/special/trigammaf/src/addon.c new file mode 100644 index 000000000000..8b4c6dfc7abb --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/trigammaf/src/addon.c @@ -0,0 +1,22 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* 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/trigammaf.h" +#include "stdlib/math/base/napi/unary.h" + +STDLIB_MATH_BASE_NAPI_MODULE_F_F( stdlib_base_trigammaf ) diff --git a/lib/node_modules/@stdlib/math/base/special/trigammaf/src/main.c b/lib/node_modules/@stdlib/math/base/special/trigammaf/src/main.c new file mode 100644 index 000000000000..965428edd96d --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/trigammaf/src/main.c @@ -0,0 +1,215 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* +* +* ## Notice +* +* The original C++ code and copyright notice are from the [Boost library]{@link http://www.boost.org/doc/libs/1_88_0/boost/math/special_functions/trigamma.hpp}. The implementation follows the original but has been reformatted and modified for use in stdlib. +* +* ```text +* (C) Copyright John Maddock 2006. +* +* Use, modification and distribution are subject to the +* Boost Software License, Version 1.0. (See accompanying file +* LICENSE or copy at http://www.boost.org/LICENSE_1_0.txt) +* ``` +*/ + +#include "stdlib/math/base/special/trigammaf.h" +#include "stdlib/math/base/special/absf.h" +#include "stdlib/math/base/special/floorf.h" +#include "stdlib/math/base/special/sinpif.h" +#include "stdlib/constants/float32/pi_squared.h" + +static const float YOFFSET12 = 2.1093254089355469f; + +/* Begin auto-generated functions. The following functions are auto-generated. Do not edit directly. */ + +// BEGIN: rational_p12q12 + +/** +* Evaluates a rational function (i.e., the ratio of two polynomials described by the coefficients stored in \\(P\\) and \\(Q\\)). +* +* ## Notes +* +* - Coefficients should be sorted in ascending degree. +* - The implementation uses [Horner's rule][horners-method] for efficient computation. +* +* [horners-method]: https://en.wikipedia.org/wiki/Horner%27s_method +* +* @param x value at which to evaluate the rational function +* @return evaluated rational function +*/ +static float rational_p12q12( const float x ) { + float ax; + float ix; + float s1; + float s2; + if ( x == 0.0f ) { + return -1.1093280605946045f; + } + if ( x < 0.0f ) { + ax = -x; + } else { + ax = x; + } + if ( ax <= 1.0f ) { + s1 = -1.1093280605946045f + (x * (-3.831067447261932f + (x * (-3.3703848401898284f + (x * (0.2808057446798121f + (x * (1.6638069578676165f + (x * 0.6446838681910284f))))))))); + s2 = 1.0f + (x * (3.453538966854115f + (x * (4.520892698785143f + (x * (2.701273417835153f + (x * (0.6446879839978561f + (x * -2.0314516859987727e-7f))))))))); + } else { + ix = 1.0f / x; + s1 = 0.6446838681910284f + (ix * (1.6638069578676165f + (ix * (0.2808057446798121f + (ix * (-3.3703848401898284f + (ix * (-3.831067447261932f + (ix * -1.1093280605946045f))))))))); + s2 = -2.0314516859987727e-7f + (ix * (0.6446879839978561f + (ix * (2.701273417835153f + (ix * (4.520892698785143f + (ix * (3.453538966854115f + (ix * 1.0f))))))))); + } + return s1 / s2; +} + +// END: rational_p12q12 + +// BEGIN: rational_p24q24 + +/** +* Evaluates a rational function (i.e., the ratio of two polynomials described by the coefficients stored in \\(P\\) and \\(Q\\)). +* +* ## Notes +* +* - Coefficients should be sorted in ascending degree. +* - The implementation uses [Horner's rule][horners-method] for efficient computation. +* +* [horners-method]: https://en.wikipedia.org/wiki/Horner%27s_method +* +* @param x value at which to evaluate the rational function +* @return evaluated rational function +*/ +static float rational_p24q24( const float x ) { + float ax; + float ix; + float s1; + float s2; + if ( x == 0.0f ) { + return -1.3803835004508848e-8f; + } + if ( x < 0.0f ) { + ax = -x; + } else { + ax = x; + } + if ( ax <= 1.0f ) { + s1 = -1.3803835004508848e-8f + (x * (0.5000004915854026f + (x * (1.6077979838469347f + (x * (2.5645435828098253f + (x * (2.0534873203680393f + (x * 0.7456698111156592f))))))))); + s2 = 1.0f + (x * (2.882278766237617f + (x * (4.168166055409092f + (x * (2.7853527819234465f + (x * (0.7496767184804479f + (x * -0.0005706911241624681f))))))))); + } else { + ix = 1.0f / x; + s1 = 0.7456698111156592f + (ix * (2.0534873203680393f + (ix * (2.5645435828098253f + (ix * (1.6077979838469347f + (ix * (0.5000004915854026f + (ix * -1.3803835004508848e-8f))))))))); + s2 = -0.0005706911241624681f + (ix * (0.7496767184804479f + (ix * (2.7853527819234465f + (ix * (4.168166055409092f + (ix * (2.882278766237617f + (ix * 1.0f))))))))); + } + return s1 / s2; +} + +// END: rational_p24q24 + +// BEGIN: rational_p4infq4inf + +/** +* Evaluates a rational function (i.e., the ratio of two polynomials described by the coefficients stored in \\(P\\) and \\(Q\\)). +* +* ## Notes +* +* - Coefficients should be sorted in ascending degree. +* - The implementation uses [Horner's rule][horners-method] for efficient computation. +* +* [horners-method]: https://en.wikipedia.org/wiki/Horner%27s_method +* +* @param x value at which to evaluate the rational function +* @return evaluated rational function +*/ +static float rational_p4infq4inf( const float x ) { + float ax; + float ix; + float s1; + float s2; + if ( x == 0.0f ) { + return 6.894758194870125e-18f; + } + if ( x < 0.0f ) { + ax = -x; + } else { + ax = x; + } + if ( ax <= 1.0f ) { + s1 = 6.894758194870125e-18f + (x * (0.49999999999998973f + (x * (1.0177274392923794f + (x * (2.498208511343429f + (x * (2.1921221359427596f + (x * (1.5897035272532765f + (x * 0.40154388356961734f))))))))))); + s2 = 1.0f + (x * (1.7021215452463931f + (x * (4.4290431747556465f + (x * (2.9745631894384923f + (x * (2.3013614809773615f + (x * (0.28360399799075753f + (x * 0.022892987908906898f))))))))))); + } else { + ix = 1.0f / x; + s1 = 0.40154388356961734f + (ix * (1.5897035272532765f + (ix * (2.1921221359427596f + (ix * (2.498208511343429f + (ix * (1.0177274392923794f + (ix * (0.49999999999998973f + (ix * 6.894758194870125e-18f))))))))))); + s2 = 0.022892987908906898f + (ix * (0.28360399799075753f + (ix * (2.3013614809773615f + (ix * (2.9745631894384923f + (ix * (4.4290431747556465f + (ix * (1.7021215452463931f + (ix * 1.0f))))))))))); + } + return s1 / s2; +} + +// END: rational_p4infq4inf + +/* End auto-generated functions. */ + +/** +* Evaluates the trigamma function for a single-precision floating-point number. +* +* @param x input value +* @return function value +* +* @example +* float v = stdlib_base_trigammaf( -2.5f ); +* // returns ~9.539f +*/ +float stdlib_base_trigammaf( const float x ) { + float result; + float xc; + float s; + float y; + float z; + + result = 0.0f; + + // Check for negative arguments and use reflection: + if ( x <= 0.0f ) { + if ( stdlib_base_floorf( x ) == x ) { + return 0.0f / 0.0f; // NaN + } + // Reflect: + z = 1.0f - x; + if ( z < 1.0f ) { + result = 1.0f / ( z * z ); + z += 1.0f; + } + s = ( stdlib_base_absf( x ) < stdlib_base_absf( z ) ) ? stdlib_base_sinpif( x ) : stdlib_base_sinpif( z ); + return result - stdlib_base_trigammaf( z ) + ( STDLIB_CONSTANT_FLOAT32_PI_SQUARED / ( s*s ) ); + } + xc = x; + if ( xc < 1.0f ) { + result = 1.0f / ( xc*xc ); + xc += 1.0f; + } + if ( xc <= 2.0f ) { + result += ( YOFFSET12 + rational_p12q12( xc ) ) / ( xc * xc ); + } else if ( xc <= 4.0f ) { + y = 1.0f / xc; + result += ( 1.0f + rational_p24q24( y ) ) / xc; + } else { + y = 1.0f / xc; + result += ( 1.0f + rational_p4infq4inf( y ) ) / xc; + } + return result; +} diff --git a/lib/node_modules/@stdlib/math/base/special/trigammaf/test/fixtures/julia/REQUIRE b/lib/node_modules/@stdlib/math/base/special/trigammaf/test/fixtures/julia/REQUIRE new file mode 100644 index 000000000000..06bfe7391215 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/trigammaf/test/fixtures/julia/REQUIRE @@ -0,0 +1,3 @@ +julia 1.5 +JSON 0.21 +SpecialFunctions 0.10.3 diff --git a/lib/node_modules/@stdlib/math/base/special/trigammaf/test/fixtures/julia/negative.json b/lib/node_modules/@stdlib/math/base/special/trigammaf/test/fixtures/julia/negative.json new file mode 100644 index 000000000000..fc0e74e7488d --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/trigammaf/test/fixtures/julia/negative.json @@ -0,0 +1 @@ +{"expected":[null,103.24724,28.536245,15.063714,10.901952,9.864611,10.913171,15.098404,28.660912,104.259705,3.9439585e6,102.249916,28.412495,15.030227,10.891112,9.864634,10.92444,15.133274,28.78653,105.28766,985992.1,101.297035,28.293392,14.995884,10.880005,9.864706,10.935783,15.168342,28.91312,106.29955,447209.38,100.32875,28.171492,14.961733,10.868968,9.864828,10.947198,15.203607,29.036812,107.35896,250278.17,99.37477,28.050516,14.9277725,10.858003,9.864999,10.958335,15.237993,29.165348,108.43484,159691.23,98.43483,27.930456,14.894002,10.847436,9.865211,10.9698925,15.273653,29.294886,109.52751,110672.65,97.50864,27.8149,14.861433,10.836609,9.8654785,10.9815235,15.309514,29.425436,110.637344,81904.23,96.6234,27.696619,14.828032,10.825851,9.865795,10.993228,15.345578,29.557009,111.73027,62572.008,95.72353,27.579227,14.794817,10.815165,9.866161,11.005006,15.380745,29.685581,112.87496,49356.543,94.836655,27.462717,14.761786,10.804546,9.866563,11.016497,15.417213,29.819199,114.0379,39925.273,93.96251,27.34708,14.729932,10.794316,9.867025,11.02842,15.453889,29.953873,115.21949,32960.117,93.10085,27.235771,14.697262,10.783834,9.8675375,11.04042,15.490773,30.089611,116.42013,27811.605,92.277016,27.121828,14.664774,10.773421,9.868098,11.052492,15.527868,30.222263,117.60295,23670.146,91.439285,27.008732,14.632465,10.763078,9.868709,11.06427,15.564039,30.360132,118.842316,20389.4,90.61336,26.896477,14.600337,10.753111,9.869347,11.076491,15.601551,30.4991,120.101974,17746.39,89.79901,26.785051,14.56935,10.742902,9.870054,11.088788,15.6392765,30.639177,121.38238,15585.933,89.02021,26.67779,14.537571,10.732759,9.8708105,11.101161,15.6772175,30.780376,122.644226,13846.898,88.22806,26.567978,14.505968,10.722685,9.871616,11.113609,15.714215,30.918377,123.966835,12341.6,87.44688,26.458977,14.474539,10.712678,9.872471,11.125753,15.752585,31.061821,125.31159,11069.109,86.676445,26.350773,14.443284,10.703037,9.873345,11.138353,15.791175,31.20642,126.678986,9983.782,85.91658,26.246607,14.41314,10.693162,9.874297,11.15103,15.829986,31.35219,128.06953,9076.955,85.18965,26.139957,14.382224,10.683354,9.8752985,11.163784,15.869019,31.494669,129.44054,8265.364,84.450035,26.034088,14.351479,10.673613,9.8763485,11.176616,15.907082,31.642778,130.87822,7557.9844,83.72043,25.928988,14.320903,10.663937,9.877414,11.189132,15.946558,31.792093,132.34067,6937.709,83.00065,25.824652,14.291413,10.654616,9.878561,11.202117,15.986261,31.942629,133.82843,6390.8037,82.31189,25.724197,14.2611685,10.645071,9.879758,11.215181,16.026194,32.094395,135.3421,5920.0005,81.610954,25.621344,14.231091,10.635591,9.881003,11.228324,16.066355,32.242752,136.83522,5486.9805,80.919334,25.519232,14.201178,10.626176,9.882299,11.241143,16.10552,32.396988,138.40172,5099.8145,80.23687,25.417856,14.171429,10.617107,9.883601,11.254442,16.14614,32.552494,139.99597,4752.249,79.56339,25.317207,14.142736,10.6078205,9.884994,11.267821,16.186995,32.70929,141.61864,4439.062,78.91876,25.220299,14.113309,10.598599,9.886436,11.2812805,16.228086,32.867382,143.21991,4164.0435,78.26254,25.121065,14.084043,10.589441,9.887928,11.29482,16.268158,33.021942,144.90057,3906.3784,77.61486,25.022541,14.054937,10.580349,9.8894205,11.308024,16.30972,33.182636,146.61172,3671.9277,76.97557,24.924719,14.025991,10.571591,9.891009,11.321724,16.351522,33.344677,148.3541,3457.9841,76.34452,24.830524,13.998074,10.562624,9.892648,11.335504,16.393568,33.508076,150.1285,3267.9087,75.74033,24.734066,13.9694395,10.55372,9.894336,11.349365,16.435858,33.66783,151.88042,3087.8645,75.125114,24.63829,13.940962,10.544881,9.896073,11.36331,16.4771,33.83395,153.72015,2922.314,74.51773,24.543192,13.912641,10.536104,9.897804,11.376908,16.519876,34.00147,155.59433,2769.7422,73.91805,24.448765,13.885324,10.527653,9.89964,11.391015,16.562904,34.170406,157.50377,2628.827,73.34377,24.357832,13.8573065,10.519,9.9015255,11.405205,16.606182,34.34078,159.38988,2502.2185,72.75889,24.264708,13.829442,10.51041,9.90346,11.419477,16.649712,34.50737,161.37143,2381.0098,72.18133,24.172235,13.80173,10.5018835,9.905444,11.433396,16.692165,34.680614,163.39099,2268.4104,71.61098,24.080412,13.77417,10.493673,9.907414,11.447835,16.7362,34.855343,165.44954,2163.6243,71.04771,23.99198,13.747587,10.485268,9.909497,11.4623575,16.780493,35.03157,167.54808,2065.9446,70.50816,23.901411,13.720322,10.476925,9.91163,11.476965,16.825047,35.209312,169.62221,1977.4171,69.95852,23.811474,13.693205,10.468644,9.913812,11.491657,16.868498,35.383133,171.8026,1891.9615,69.41561,23.72216,13.666237,10.460424,9.915974,11.505985,16.913568,35.563915,174.02618,1811.9371,68.87935,23.633465,13.639416,10.452512,9.918254,11.520846,16.958904,35.746265,176.29411,1736.8931,68.34961,23.54804,13.613544,10.444412,9.920584,11.535794,17.004509,35.9302,178.60756,1668.4963,67.84206,23.460548,13.58701,10.436375,9.922964,11.550828,17.050383,36.110092,180.89552,1602.1161,67.324875,23.373657,13.56062,10.428397,9.925395,11.565489,17.095123,36.297207,183.30226,1539.6273,66.81391,23.287363,13.534374,10.420481,9.927797,11.580694,17.141533,36.485962,185.75829,1480.7318,66.309074,23.20166,13.509058,10.412861,9.930326,11.595987,17.188217,36.676376,188.26495,1425.159,65.825294,23.119114,13.483092,10.405063,9.932905,11.611369,17.235178,36.86847,190.74535,1374.2117,65.33223,23.034561,13.457268,10.3973255,9.9355345,11.626839,17.28242,37.056362,193.35591,1324.4874,64.84502,22.950586,13.431583,10.3896475,9.938214,11.641923,17.328495,37.25182,196.02142,1277.4203,64.36354,22.867182,13.406038,10.382257,9.940859,11.657568,17.376291,37.44902,198.74344,1232.8242,63.887733,22.786844,13.381398,10.374698,9.943637,11.673303,17.424372,37.647976,201.52356,1191.7786,63.43166,22.704552,13.356127,10.367197,9.946466,11.689127,17.47274,37.84871,204.2765,1151.5662,62.96674,22.622814,13.330992,10.359755,9.949346,11.705042,17.519917,38.045082,207.17601,1113.3606,62.50722,22.54163,13.305993,10.352372,9.952184,11.72056,17.568857,38.249386,210.13875,1077.0306,62.05302,22.460993,13.281879,10.345267,9.955162,11.736654,17.61809,38.45553,213.16658,1042.4553,61.604057,22.383314,13.257148,10.338,9.958191,11.752839,17.667618,38.66354,216.26141,1010.4984,61.173626,22.303741,13.23255,10.330792,9.96127,11.769117,17.717443,38.867046,219.32832,979.06244,60.734745,22.224699,13.208085,10.323642,9.964401,11.784987,17.766045,39.078796,222.56104,949.07556,60.300873,22.146187,13.183753,10.316762,9.9674835,11.801447,17.816463,39.292477,225.86687,920.45,59.871925,22.0682,13.160282,10.309727,9.970713,11.818,17.867186,39.508114,229.24808,893.10474,59.460613,21.993069,13.1362095,10.302749,9.973994,11.834646,17.918215,39.72573,232.60097,867.73956,59.04116,21.9161,13.112267,10.295828,9.977325,11.851386,17.967989,39.938663,236.13745,842.70105,58.626423,21.839642,13.088453,10.288965,9.980708,11.867708,18.019629,40.160248,239.7564,818.7348,58.216324,21.76369,13.06477,10.282363,9.984035,11.884634,18.07158,40.383884,243.46042,795.7806,57.8108,21.69052,13.0419235,10.275614,9.987517,11.901656,18.123848,40.609596,247.25218,774.1085,57.415825,21.615553,13.018492,10.26892,9.991051,11.918512,18.175632,40.833946,251.07498,753.0002,57.025154,21.54108,12.995186,10.262284,9.99458,11.935724,18.228533,41.063858,254.98837,733.04785,56.63282,21.467098,12.972356,10.255803,9.998216,11.9530325,18.280945,41.29239,259.05765,713.59265,56.250645,21.39471,12.949301,10.249279,10.001844,11.970173,18.334488,41.526604,263.1625,695.18286,55.86681,21.321688,12.926715,10.242908,10.005581,11.987674,18.388357,41.759422,267.4325,677.2126,55.487164,21.250237,12.903906,10.236496,10.009369,12.005004,18.44173,41.998047,271.80862,660.1903,55.117302,21.178158,12.88122,10.230234,10.013148,12.0227,18.496258,42.235264,276.22565,643.5576,54.745792,21.10763,12.858997,10.223933,10.017038,12.040223,18.550283,42.478405,280.8231,627.54877,54.38383,21.03648,12.836554,10.217688,10.020919,12.058115,18.605476,42.723866,285.46542,612.36224,54.02023,20.965792,12.8145685,10.211591,10.02491,12.076106,18.660164,42.967903,290.2994,597.50214,53.665943,20.89662,12.792365,10.205455,10.028891,12.093922,18.716034,43.218056,295.18262,583.39246,53.310024,20.826838,12.770615,10.199466,10.032986,12.112112,18.772247,43.46677,300.2696,569.5738,52.957897,20.758553,12.74865,10.1934395,10.037131,12.130124,18.827948,43.721737,305.49078,556.4415,52.614754,20.68966,12.726803,10.187558,10.041264,12.148516,18.884855,43.97525,310.76862,543.56915,52.269993,20.622244,12.7054,10.181641,10.045512,12.166726,18.941242,44.23515,316.27045,531.3261,51.934002,20.554228,12.683787,10.175778,10.049746,12.18532,18.99885,44.49758,321.83453,519.3156,51.5964,20.486649,12.662614,10.170057,10.054097,12.204017,19.055935,44.758545,327.63748,507.71033,51.26737,20.420515,12.641232,10.164303,10.058432,12.222529,19.114256,45.026104,333.50888,496.65933,50.936733,20.35379,12.620284,10.158688,10.062886,12.241431,19.172049,45.29218,339.6353,485.80585,50.609535,20.28849,12.59913,10.153041,10.067392,12.260147,19.231094,45.565,345.93387,475.46313,50.290604,20.222607,12.57809,10.147531,10.07188,12.279257,19.29051,45.836323,352.31152,465.29788,49.97009,20.15813,12.557478,10.14199,10.076489,12.298178,19.349386,46.11454,358.97128,455.6042,49.657654,20.093075,12.536662,10.136584,10.0810795,12.317495,19.409542,46.39553,365.71823,446.0702,49.34364,20.028429,12.516271,10.13115,10.085793,12.33692,19.469154,46.67501,372.76736,436.83453,49.03752,19.965162,12.495677,10.125769,10.090484,12.356153,19.530062,46.961613,379.91263,428.0184,48.729836,19.901327,12.475502,10.12052,10.095301,12.375789,19.590422,47.246693,387.38208,419.33896,48.429867,19.838848,12.455128,10.115244,10.10017,12.395231,19.652094,47.53906,395.076,411.0485,48.12834,19.775806,12.434864,10.110098,10.105016,12.415081,19.714155,47.82989,402.88153,402.8815,47.82986,19.714106,12.415011,10.104926,10.109989,12.434735,19.775658,48.128174,411.0483,395.07578,47.53883,19.651846,12.394963,10.099883,10.114937,12.454802,19.838503,48.4295,419.33856,387.38165,47.246265,19.589975,12.375323,10.094815,10.120014,12.474977,19.900782,48.72927,428.01782,379.91202,46.960987,19.529419,12.355488,10.0898,10.125065,12.494952,19.964418,49.03676,436.83377,372.76654,46.674187,19.468311,12.336057,10.084909,10.130247,12.5153475,20.027487,49.342678,446.0692,365.71722,46.39451,19.408499,12.316433,10.079996,10.135482,12.53554,20.09193,49.65649,455.603,358.9701,46.11332,19.348143,12.296914,10.075207,10.140687,12.556154,20.156786,49.968727,465.2965,352.31012,45.8349,19.289066,12.277793,10.070395,10.146026,12.576566,20.221064,50.28904,475.46155,345.93225,45.563374,19.229448,12.258482,10.065706,10.151334,12.597404,20.286745,50.607765,485.80408,339.6335,45.29035,19.1702,12.239563,10.060997,10.156778,12.618355,20.351841,50.93476,496.65735,333.50687,45.02407,19.112206,12.220457,10.056338,10.1621895,12.639097,20.41836,51.265194,507.70813,327.63525,44.756306,19.053679,12.201739,10.051799,10.167739,12.6602745,20.48429,51.59402,519.31323,321.83212,44.495136,18.996387,12.182836,10.04724,10.173253,12.681241,20.55166,51.931416,531.3235,316.26782,44.2325,18.93857,12.164034,10.042799,10.178906,12.702645,20.619469,52.267197,543.56635,310.76578,43.97239,18.881973,12.145614,10.038341,10.184613,12.723837,20.686674,52.611748,556.4385,305.48773,43.718666,18.824856,12.127011,10.033997,10.190284,12.745472,20.755354,52.954678,569.57056,300.26633,43.46349,18.768942,12.108785,10.029636,10.196095,12.767223,20.823425,53.30659,583.389,295.17914,43.214558,18.712513,12.090379,10.025327,10.201869,12.788757,20.89299,53.662292,597.4985,290.29572,42.964188,18.656425,12.072346,10.021128,10.207786,12.810741,20.961943,54.016357,612.35834,285.46152,42.71993,18.601517,12.054133,10.016915,10.213662,12.832506,21.03241,54.379738,627.5447,280.81897,42.474247,18.546103,12.036018,10.012812,10.219685,12.854726,21.103336,54.741474,643.5533,276.22128,42.23088,18.49185,12.0182705,10.008697,10.2257595,12.876722,21.173637,55.11276,660.1857,271.80402,41.993435,18.437096,12.000346,10.004687,10.2317915,12.8991785,21.245485,55.482388,677.2078,267.42767,41.75458,18.38349,11.982783,10.000668,10.237971,12.921755,21.316704,55.8618,695.17786,263.15744,41.521526,18.329386,11.965048,9.9966955,10.244106,12.944104,21.38949,56.2454,713.5874,259.05234,41.287075,18.275606,11.947669,9.992827,10.250391,12.96692,21.461637,56.627335,733.04236,254.98285,41.0583,18.22295,11.930119,9.98895,10.256629,12.989507,21.535376,57.01943,752.99445,251.0692,40.828144,18.169806,11.912661,9.985174,10.263019,13.012565,21.6096,57.409847,774.10254,247.18803,40.60011,18.11777,11.895554,9.98139,10.269461,13.035391,21.683176,57.81068,796.11487,243.45413,40.37758,18.065248,11.878277,9.977705,10.275853,13.058692,21.758377,58.20984,818.72833,239.74986,40.153683,18.013824,11.861348,9.974012,10.282399,13.0817585,21.83292,58.619675,842.6943,236.13065,39.935177,17.961916,11.844251,9.9703665,10.288894,13.105306,21.909113,59.034145,867.3448,232.64688,39.71532,17.910315,11.827496,9.966816,10.295544,13.128977,21.98464,59.446938,893.50256,229.18893,39.500744,17.859787,11.810575,9.96326,10.30214,13.152409,22.06184,59.870823,920.44244,225.85925,39.28483,17.808784,11.793992,9.959798,10.308893,13.176328,22.139553,60.293022,949.0677,222.55313,39.07086,17.758842,11.777245,9.95633,10.315698,13.200005,22.21659,60.72661,979.05426,219.34435,38.862015,17.70843,11.760707,9.95293,10.322447,13.224174,22.294735,61.161846,1010.0024,216.20552,38.65343,17.658686,11.744253,9.949574,10.329299,13.248283,22.373398,61.60208,1042.7021,213.1346,38.446697,17.609226,11.72776,9.94626,10.336257,13.272517,22.45319,62.04739,1077.29,210.12964,38.24024,17.560053,11.711473,9.942988,10.34321,13.296877,22.532906,62.497852,1113.3512,207.18878,38.037155,17.511158,11.695268,9.939758,10.350213,13.321362,22.613152,62.95354,1151.2596,204.31021,37.83586,17.462542,11.679144,9.936569,10.357266,13.345972,22.693933,63.418087,1191.1436,201.4709,37.636326,17.413837,11.663099,9.933399,10.364368,13.370899,22.775253,63.88452,1233.1428,198.71216,37.438538,17.365772,11.647134,9.930291,10.371519,13.395763,22.857115,64.35644,1277.4095,196.01062,37.24247,17.31798,11.631247,9.927222,10.378718,13.4207535,22.939526,64.833916,1324.11,193.36473,37.048103,17.270452,11.615437,9.924192,10.3860235,13.44587,23.023127,65.31705,1373.813,190.77295,36.853954,17.223194,11.599586,9.921201,10.393319,13.471113,23.10665,65.805916,1425.9656,188.23384,36.662945,17.176197,11.583927,9.918246,10.400661,13.496484,23.190733,66.30061,1481.1528,185.74594,36.473576,17.12946,11.568343,9.915328,10.40805,13.52198,23.275381,66.80124,1539.6146,183.30792,36.285828,17.08263,11.552832,9.912427,10.415484,13.547804,23.360598,67.311775,1601.6152,180.90039,36.09968,17.036407,11.537393,9.90958,10.422964,13.573556,23.446388,67.82457,1667.4463,178.55852,35.91512,16.990437,11.522023,9.906767,10.430489,13.599434,23.532755,68.34358,1737.4298,176.26266,35.73212,16.944714,11.506722,9.903986,10.438056,13.625439,23.620375,68.868904,1812.5096,174.01161,35.549294,16.899239,11.491377,9.9012375,10.445727,13.65157,23.707914,69.40064,1891.9465,171.80421,35.369377,16.854008,11.47621,9.8985195,10.45338,13.677827,23.796043,69.938896,1976.7325,169.63934,35.190968,16.809015,11.461108,9.89583,10.461073,13.704209,23.884768,70.48377,2067.3586,167.5159,35.01405,16.76426,11.446069,9.893152,10.468804,13.730924,23.97409,71.03962,2164.3738,165.41711,34.838604,16.719402,11.431089,9.890517,10.476574,13.757556,24.064014,71.59812,2268.3933,163.37373,34.664608,16.675114,11.416169,9.887906,10.484381,13.784311,24.154547,72.16358,2380.1077,161.36871,34.49205,16.63105,11.401306,9.885319,10.492221,13.811189,24.245687,72.73611,2500.295,159.40111,34.319607,16.58721,11.386388,9.8827505,10.500159,13.838187,24.33815,73.31581,2630.8618,157.46999,34.14987,16.543589,11.371631,9.880201,10.508064,13.865305,24.430527,73.90283,2770.8328,155.57445,33.981518,16.500183,11.356922,9.877667,10.515998,13.892542,24.523523,74.49727,2922.2935,153.71362,33.814526,16.456985,11.342259,9.875146,10.523956,13.920109,24.617146,75.10389,3086.5366,151.87285,33.64888,16.413675,11.32764,9.872622,10.531939,13.947576,24.711393,75.713615,3265.0422,150.07916,33.484554,16.370888,11.313058,9.870117,10.539941,13.975154,24.80627,76.33115,3459.5107,148.31773,33.321537,16.328295,11.2985115,9.867615,10.547958,14.002841,24.901777,76.95661,3671.9038,146.58777,33.15981,16.285892,11.283891,9.865111,10.556057,14.030633,24.998663,77.59014,3906.3538,144.8885,32.998745,16.243673,11.269451,9.862601,10.56406,14.058525,25.09507,78.23188,4160.9478,143.21922,32.83894,16.201475,11.254929,9.860074,10.572135,14.086625,25.192862,78.88447,4443.5464,141.57303,32.68097,16.159601,11.24047,9.857534,10.580171,14.114706,25.290915,79.54307,4754.7188,139.9617,32.52421,16.11789,11.226018,9.854969,10.588197,14.142871,25.389603,80.21029,5099.785,138.3783,32.368637,16.076328,11.211563,9.852371,10.596203,14.171114,25.48931,80.88889,5485.4014,136.81627,32.21365,16.034756,11.197046,9.849727,10.6042185,14.19954,25.589264,81.573845,5914.7637,135.28683,32.06039,15.993466,11.182559,9.847034,10.61216,14.227913,25.689844,82.26787,6396.616,133.7834,31.908247,15.9522915,11.168036,9.844277,10.620051,14.256333,25.791044,82.97111,6939.8774,132.30537,31.757195,15.911219,11.153416,9.841436,10.627914,14.284903,25.893255,83.68646,7557.9473,130.84663,31.606642,15.870078,11.13878,9.838505,10.635661,14.313375,25.995672,84.40864,8259.599,129.41772,31.457687,15.829151,11.124058,9.835457,10.643306,14.341847,26.098679,85.140495,9063.74,128.01247,31.309729,15.788261,11.109227,9.832271,10.650826,14.370294,26.202255,85.882195,9991.351,126.62509,31.162178,15.747235,11.094213,9.828913,10.658231,14.398806,26.30679,86.63677,11073.505,125.265594,31.016094,15.706331,11.079076,9.825357,10.665411,14.427112,26.411436,87.39863,12336.324,123.92811,30.87087,15.665361,11.063727,9.82156,10.67236,14.455289,26.516565,88.17078,13828.226,122.61212,30.72645,15.624275,11.048118,9.817468,10.679028,14.483403,26.622547,88.956375,15615.602,121.314644,30.58249,15.582937,11.032159,9.813014,10.685386,14.511149,26.728489,89.74954,17764.377,120.03767,30.43918,15.541342,11.015795,9.808122,10.691274,14.538562,26.834723,90.55339,20389.338,118.78302,30.296669,15.499458,10.998925,9.802684,10.696643,14.565594,26.94136,91.36958,23649.258,117.54537,30.154295,15.457014,10.981438,9.796566,10.701314,14.591978,27.047832,92.19505,27749.72,116.32882,30.012144,15.413908,10.963109,9.789583,10.705139,14.617646,27.154377,93.03298,33028.613,115.12812,29.870235,15.369974,10.943746,9.781489,10.707822,14.642211,27.260298,93.88011,39955.63,113.94489,29.727732,15.324748,10.922966,9.7719345,10.709043,14.665424,27.365652,94.739525,49335.54,112.7805,29.584684,15.277904,10.900332,9.760421,10.708241,14.686622,27.469444,95.60925,62452.66,111.63059,29.44004,15.22861,10.87508,9.746196,10.704676,14.7051115,27.571272,96.486946,81547.62,110.494934,29.29277,15.1759,10.846122,9.728085,10.697081,14.719506,27.66945,97.37394,110989.17,109.37054,29.141447,15.117984,10.811594,9.704133,10.683405,14.727658,27.761795,98.26723,159812.84,108.2564,28.983027,15.051767,10.768211,9.670845,10.659923,14.7255945,27.84407,99.16251,249801.02,107.14643,28.811924,14.971264,10.709534,9.621285,10.619163,14.705258,27.907608,100.05107,443947.16,106.02762,28.615957,14.863188,10.621037,9.539535,10.543624,14.647359,27.931044,100.90874,999194.7,104.87208,28.362675,14.691185,10.461852,9.379478,10.381064,14.492456,27.846493,101.658356,3.9967698e6,103.57405,27.929256,14.310544,10.060044,8.935016,9.881956,13.935019,27.274923,101.82272,null],"x":[-200.0,-199.89995,-199.7999,-199.69984,-199.5998,-199.49976,-199.3997,-199.29965,-199.1996,-199.09955,-198.9995,-198.89944,-198.7994,-198.69936,-198.5993,-198.49925,-198.3992,-198.29915,-198.1991,-198.09904,-197.999,-197.89896,-197.7989,-197.69885,-197.5988,-197.49875,-197.3987,-197.29865,-197.1986,-197.09856,-196.9985,-196.89845,-196.7984,-196.69835,-196.5983,-196.49825,-196.3982,-196.29814,-196.1981,-196.09805,-195.998,-195.89795,-195.7979,-195.69785,-195.5978,-195.49774,-195.3977,-195.29765,-195.1976,-195.09755,-194.9975,-194.89745,-194.7974,-194.69734,-194.5973,-194.49725,-194.3972,-194.29715,-194.1971,-194.09705,-193.997,-193.89694,-193.7969,-193.69685,-193.5968,-193.49675,-193.3967,-193.29665,-193.1966,-193.09654,-192.9965,-192.89645,-192.7964,-192.69635,-192.5963,-192.49625,-192.3962,-192.29614,-192.19609,-192.09605,-191.996,-191.89595,-191.7959,-191.69585,-191.5958,-191.49574,-191.39569,-191.29565,-191.1956,-191.09555,-190.9955,-190.89545,-190.7954,-190.69534,-190.59529,-190.49525,-190.3952,-190.29515,-190.1951,-190.09505,-189.995,-189.89494,-189.79489,-189.69485,-189.5948,-189.49475,-189.3947,-189.29465,-189.1946,-189.09454,-188.99449,-188.89444,-188.7944,-188.69435,-188.5943,-188.49425,-188.3942,-188.29414,-188.19409,-188.09404,-187.994,-187.89395,-187.7939,-187.69385,-187.5938,-187.49374,-187.39369,-187.29364,-187.1936,-187.09355,-186.9935,-186.89345,-186.7934,-186.69334,-186.59329,-186.49324,-186.3932,-186.29315,-186.1931,-186.09305,-185.993,-185.89294,-185.7929,-185.69284,-185.5928,-185.49275,-185.3927,-185.29265,-185.1926,-185.09254,-184.9925,-184.89244,-184.79239,-184.69235,-184.5923,-184.49225,-184.3922,-184.29214,-184.1921,-184.09204,-183.99199,-183.89195,-183.7919,-183.69185,-183.5918,-183.49174,-183.3917,-183.29164,-183.19159,-183.09155,-182.9915,-182.89145,-182.7914,-182.69135,-182.5913,-182.49124,-182.39119,-182.29115,-182.1911,-182.09105,-181.991,-181.89095,-181.7909,-181.69084,-181.59079,-181.49074,-181.3907,-181.29065,-181.1906,-181.09055,-180.9905,-180.89044,-180.79039,-180.69034,-180.5903,-180.49025,-180.3902,-180.29015,-180.1901,-180.09004,-179.98999,-179.88994,-179.7899,-179.68985,-179.5898,-179.48975,-179.3897,-179.28964,-179.18959,-179.08954,-178.9895,-178.88945,-178.7894,-178.68935,-178.5893,-178.48924,-178.38919,-178.28914,-178.1891,-178.08905,-177.989,-177.88895,-177.7889,-177.68884,-177.58879,-177.48874,-177.38869,-177.28865,-177.1886,-177.08855,-176.9885,-176.88844,-176.78839,-176.68834,-176.58829,-176.48825,-176.3882,-176.28815,-176.1881,-176.08804,-175.98799,-175.88794,-175.78789,-175.68785,-175.5878,-175.48775,-175.3877,-175.28764,-175.18759,-175.08754,-174.98749,-174.88745,-174.7874,-174.68735,-174.5873,-174.48724,-174.38719,-174.28714,-174.18709,-174.08704,-173.987,-173.88695,-173.7869,-173.68684,-173.58679,-173.48674,-173.38669,-173.28664,-173.1866,-173.08655,-172.9865,-172.88644,-172.78639,-172.68634,-172.58629,-172.48624,-172.3862,-172.28615,-172.1861,-172.08604,-171.986,-171.88594,-171.78589,-171.68584,-171.5858,-171.48575,-171.3857,-171.28564,-171.1856,-171.08554,-170.98549,-170.88544,-170.78539,-170.68535,-170.5853,-170.48524,-170.3852,-170.28514,-170.18509,-170.08504,-169.98499,-169.88495,-169.7849,-169.68484,-169.5848,-169.48474,-169.38469,-169.28464,-169.18459,-169.08455,-168.9845,-168.88445,-168.7844,-168.68434,-168.58429,-168.48424,-168.38419,-168.28415,-168.1841,-168.08405,-167.984,-167.88394,-167.78389,-167.68384,-167.58379,-167.48375,-167.3837,-167.28365,-167.1836,-167.08354,-166.98349,-166.88344,-166.78339,-166.68333,-166.5833,-166.48325,-166.3832,-166.28314,-166.18309,-166.08304,-165.98299,-165.88293,-165.7829,-165.68285,-165.5828,-165.48274,-165.38269,-165.28264,-165.18259,-165.08253,-164.9825,-164.88245,-164.7824,-164.68234,-164.58229,-164.48224,-164.38219,-164.28214,-164.1821,-164.08205,-163.982,-163.88194,-163.78189,-163.68184,-163.58179,-163.48174,-163.38168,-163.28165,-163.1816,-163.08154,-162.98149,-162.88144,-162.78139,-162.68134,-162.58128,-162.48125,-162.3812,-162.28114,-162.18109,-162.08104,-161.98099,-161.88094,-161.78088,-161.68085,-161.5808,-161.48074,-161.38069,-161.28064,-161.18059,-161.08054,-160.98048,-160.88045,-160.7804,-160.68034,-160.58029,-160.48024,-160.38019,-160.28014,-160.18008,-160.08005,-159.98,-159.87994,-159.77989,-159.67984,-159.57979,-159.47974,-159.37968,-159.27963,-159.1796,-159.07954,-158.97949,-158.87944,-158.77939,-158.67934,-158.57928,-158.47923,-158.3792,-158.27914,-158.1791,-158.07904,-157.97899,-157.87894,-157.77888,-157.67883,-157.5788,-157.47874,-157.3787,-157.27864,-157.17859,-157.07854,-156.97849,-156.87843,-156.7784,-156.67834,-156.5783,-156.47824,-156.37819,-156.27814,-156.17809,-156.07803,-155.97798,-155.87794,-155.7779,-155.67784,-155.57779,-155.47774,-155.37769,-155.27763,-155.17758,-155.07755,-154.9775,-154.87744,-154.77739,-154.67734,-154.57729,-154.47723,-154.37718,-154.27715,-154.1771,-154.07704,-153.97699,-153.87694,-153.77689,-153.67683,-153.57678,-153.47675,-153.3767,-153.27664,-153.17659,-153.07654,-152.97649,-152.87643,-152.77638,-152.67633,-152.5763,-152.47624,-152.37619,-152.27614,-152.17609,-152.07603,-151.97598,-151.87593,-151.7759,-151.67584,-151.57579,-151.47574,-151.37569,-151.27563,-151.17558,-151.07553,-150.9755,-150.87544,-150.77539,-150.67534,-150.57529,-150.47523,-150.37518,-150.27513,-150.1751,-150.07504,-149.97499,-149.87494,-149.77489,-149.67484,-149.57478,-149.47473,-149.3747,-149.27464,-149.17459,-149.07454,-148.97449,-148.87444,-148.77438,-148.67433,-148.57428,-148.47424,-148.37419,-148.27414,-148.17409,-148.07404,-147.97398,-147.87393,-147.77388,-147.67384,-147.57379,-147.47374,-147.37369,-147.27364,-147.17358,-147.07353,-146.97348,-146.87344,-146.77339,-146.67334,-146.57329,-146.47324,-146.37318,-146.27313,-146.17308,-146.07304,-145.97299,-145.87294,-145.77289,-145.67284,-145.57278,-145.47273,-145.37268,-145.27263,-145.17259,-145.07254,-144.97249,-144.87244,-144.77238,-144.67233,-144.57228,-144.47223,-144.3722,-144.27214,-144.17209,-144.07204,-143.97198,-143.87193,-143.77188,-143.67183,-143.5718,-143.47174,-143.37169,-143.27164,-143.17159,-143.07153,-142.97148,-142.87143,-142.7714,-142.67134,-142.57129,-142.47124,-142.37119,-142.27113,-142.17108,-142.07103,-141.971,-141.87094,-141.77089,-141.67084,-141.57079,-141.47073,-141.37068,-141.27063,-141.17058,-141.07054,-140.97049,-140.87044,-140.77039,-140.67033,-140.57028,-140.47023,-140.37018,-140.27014,-140.17009,-140.07004,-139.96999,-139.86993,-139.76988,-139.66983,-139.56978,-139.46974,-139.36969,-139.26964,-139.16959,-139.06953,-138.96948,-138.86943,-138.76938,-138.66934,-138.56929,-138.46924,-138.36919,-138.26913,-138.16908,-138.06903,-137.96898,-137.86893,-137.76889,-137.66884,-137.56879,-137.46873,-137.36868,-137.26863,-137.16858,-137.06853,-136.96849,-136.86844,-136.76839,-136.66833,-136.56828,-136.46823,-136.36818,-136.26813,-136.16809,-136.06804,-135.96799,-135.86794,-135.76788,-135.66783,-135.56778,-135.46773,-135.36769,-135.26764,-135.16759,-135.06754,-134.96748,-134.86743,-134.76738,-134.66733,-134.56729,-134.46724,-134.36719,-134.26714,-134.16708,-134.06703,-133.96698,-133.86693,-133.76688,-133.66684,-133.56679,-133.46674,-133.36668,-133.26663,-133.16658,-133.06653,-132.96648,-132.86644,-132.76639,-132.66634,-132.56628,-132.46623,-132.36618,-132.26613,-132.16608,-132.06604,-131.96599,-131.86594,-131.76588,-131.66583,-131.56578,-131.46573,-131.36568,-131.26564,-131.16559,-131.06554,-130.96548,-130.86543,-130.76538,-130.66533,-130.56528,-130.46523,-130.36519,-130.26514,-130.16508,-130.06503,-129.96498,-129.86493,-129.76488,-129.66483,-129.56479,-129.46474,-129.36469,-129.26463,-129.16458,-129.06453,-128.96448,-128.86443,-128.76439,-128.66434,-128.56429,-128.46423,-128.36418,-128.26413,-128.16408,-128.06403,-127.96398,-127.86393,-127.763885,-127.66383,-127.56378,-127.46373,-127.363686,-127.26363,-127.16358,-127.06353,-126.96348,-126.863434,-126.76338,-126.66333,-126.56328,-126.463234,-126.36318,-126.26313,-126.16308,-126.063034,-125.96298,-125.86293,-125.76288,-125.662834,-125.56278,-125.46273,-125.36268,-125.262634,-125.16258,-125.06253,-124.96248,-124.862434,-124.76238,-124.66233,-124.56228,-124.462234,-124.36218,-124.26213,-124.16208,-124.062035,-123.96198,-123.86193,-123.76188,-123.661835,-123.56178,-123.46173,-123.36168,-123.26163,-123.16158,-123.06153,-122.96148,-122.86143,-122.76138,-122.66133,-122.56128,-122.46123,-122.36118,-122.26113,-122.16108,-122.06103,-121.96098,-121.86093,-121.76088,-121.66083,-121.56078,-121.46073,-121.36068,-121.26063,-121.16058,-121.06053,-120.96048,-120.86043,-120.76038,-120.66033,-120.56028,-120.46023,-120.36018,-120.26013,-120.16008,-120.06003,-119.95998,-119.85993,-119.75988,-119.65983,-119.55978,-119.45973,-119.35968,-119.25963,-119.15958,-119.05953,-118.95948,-118.85943,-118.75938,-118.65933,-118.55928,-118.45923,-118.35918,-118.25913,-118.15908,-118.05903,-117.95898,-117.85893,-117.75888,-117.65883,-117.55878,-117.45873,-117.35868,-117.25863,-117.15858,-117.05853,-116.95848,-116.85843,-116.75838,-116.65833,-116.55828,-116.45823,-116.35818,-116.258125,-116.15808,-116.05803,-115.95798,-115.857925,-115.75788,-115.65783,-115.55778,-115.457726,-115.35768,-115.25763,-115.15758,-115.057526,-114.95748,-114.85743,-114.75738,-114.657326,-114.55728,-114.45723,-114.35718,-114.257126,-114.15708,-114.05703,-113.95698,-113.856926,-113.75688,-113.65683,-113.55678,-113.456726,-113.35668,-113.25663,-113.15658,-113.056526,-112.95648,-112.85643,-112.75638,-112.65633,-112.556274,-112.45623,-112.35618,-112.25613,-112.156075,-112.05603,-111.95598,-111.85593,-111.755875,-111.65583,-111.55578,-111.45573,-111.355675,-111.25563,-111.15558,-111.05553,-110.955475,-110.85543,-110.75538,-110.65533,-110.555275,-110.45523,-110.35518,-110.25513,-110.155075,-110.05503,-109.95498,-109.85493,-109.754875,-109.65483,-109.55478,-109.45473,-109.354675,-109.25463,-109.15458,-109.05453,-108.954475,-108.85442,-108.75438,-108.65433,-108.554276,-108.45422,-108.35418,-108.25413,-108.154076,-108.05402,-107.95398,-107.85393,-107.753876,-107.653824,-107.55378,-107.45373,-107.353676,-107.253624,-107.15358,-107.05353,-106.953476,-106.853424,-106.75338,-106.65333,-106.553276,-106.453224,-106.35318,-106.25313,-106.153076,-106.053024,-105.95298,-105.85293,-105.75288,-105.652824,-105.55278,-105.45273,-105.35268,-105.252625,-105.15257,-105.05253,-104.95248,-104.852425,-104.75237,-104.65233,-104.55228,-104.452225,-104.35217,-104.25213,-104.15208,-104.052025,-103.95197,-103.85193,-103.75188,-103.651825,-103.55177,-103.45173,-103.35168,-103.251625,-103.15157,-103.05153,-102.95148,-102.851425,-102.75137,-102.65133,-102.55128,-102.451225,-102.35117,-102.25113,-102.15108,-102.051025,-101.95097,-101.85093,-101.75088,-101.650826,-101.55077,-101.45072,-101.35068,-101.250626,-101.15057,-101.05052,-100.95048,-100.850426,-100.750374,-100.65032,-100.55028,-100.450226,-100.350174,-100.25012,-100.15008,-100.050026,-99.949974,-99.84992,-99.74988,-99.649826,-99.549774,-99.44972,-99.34968,-99.249626,-99.149574,-99.04952,-98.94948,-98.84943,-98.749374,-98.64932,-98.54928,-98.44923,-98.349174,-98.24912,-98.14907,-98.04903,-97.948975,-97.84892,-97.74887,-97.64883,-97.548775,-97.44872,-97.34867,-97.24863,-97.148575,-97.04852,-96.94847,-96.84843,-96.748375,-96.64832,-96.54827,-96.44823,-96.348175,-96.24812,-96.14807,-96.04803,-95.947975,-95.84792,-95.74787,-95.64783,-95.547775,-95.44772,-95.34767,-95.24763,-95.147575,-95.04752,-94.94747,-94.84743,-94.747375,-94.64732,-94.54727,-94.44722,-94.347176,-94.24712,-94.14707,-94.04702,-93.946976,-93.846924,-93.74687,-93.64682,-93.546776,-93.446724,-93.34667,-93.24662,-93.146576,-93.046524,-92.94647,-92.84642,-92.746376,-92.646324,-92.54627,-92.44622,-92.346176,-92.246124,-92.14607,-92.04602,-91.94598,-91.845924,-91.74587,-91.64582,-91.54578,-91.445724,-91.34567,-91.24562,-91.14558,-91.045525,-90.94547,-90.84542,-90.74537,-90.645325,-90.54527,-90.44522,-90.34517,-90.245125,-90.14507,-90.04502,-89.94497,-89.844925,-89.74487,-89.64482,-89.54477,-89.444725,-89.34467,-89.24462,-89.14457,-89.044525,-88.94447,-88.84442,-88.74437,-88.644325,-88.54427,-88.44422,-88.34417,-88.244125,-88.14407,-88.04402,-87.94397,-87.843925,-87.74387,-87.64382,-87.54377,-87.443726,-87.34367,-87.24362,-87.14357,-87.04352,-86.943474,-86.84342,-86.74337,-86.64332,-86.543274,-86.44322,-86.34317,-86.24312,-86.143074,-86.04302,-85.94297,-85.84292,-85.742874,-85.64282,-85.54277,-85.44272,-85.342674,-85.24262,-85.14257,-85.04252,-84.942474,-84.84242,-84.74237,-84.64232,-84.542274,-84.44222,-84.34217,-84.24212,-84.142075,-84.04202,-83.94197,-83.84192,-83.741875,-83.64182,-83.54177,-83.44172,-83.34167,-83.24162,-83.14157,-83.04152,-82.94147,-82.84142,-82.74137,-82.64132,-82.54127,-82.44122,-82.34117,-82.24112,-82.14107,-82.04102,-81.94097,-81.84092,-81.74087,-81.64082,-81.54077,-81.44072,-81.34067,-81.24062,-81.14057,-81.04052,-80.94047,-80.84042,-80.74037,-80.64032,-80.54027,-80.44022,-80.34017,-80.24012,-80.14007,-80.04002,-79.93997,-79.83992,-79.73987,-79.63982,-79.53977,-79.43972,-79.33967,-79.23962,-79.13957,-79.03952,-78.93947,-78.83942,-78.73937,-78.63932,-78.53927,-78.43922,-78.33917,-78.23912,-78.13907,-78.03902,-77.93897,-77.83892,-77.73887,-77.63882,-77.53877,-77.43872,-77.33867,-77.23862,-77.13857,-77.03852,-76.93847,-76.83842,-76.73837,-76.63832,-76.53827,-76.43822,-76.338165,-76.23812,-76.13807,-76.03802,-75.937965,-75.83792,-75.73787,-75.63782,-75.537766,-75.43772,-75.33767,-75.23762,-75.137566,-75.03752,-74.93747,-74.83742,-74.737366,-74.63732,-74.53727,-74.43722,-74.337166,-74.23712,-74.13707,-74.03702,-73.936966,-73.83692,-73.73687,-73.63682,-73.536766,-73.43672,-73.33667,-73.23662,-73.136566,-73.03652,-72.93647,-72.83642,-72.73637,-72.636314,-72.53627,-72.43622,-72.33617,-72.236115,-72.13607,-72.03602,-71.93597,-71.835915,-71.73587,-71.63582,-71.53577,-71.435715,-71.33567,-71.23562,-71.13557,-71.035515,-70.93547,-70.83542,-70.73537,-70.635315,-70.53527,-70.43522,-70.33517,-70.235115,-70.13507,-70.03502,-69.93497,-69.834915,-69.73487,-69.63482,-69.53477,-69.434715,-69.33467,-69.23462,-69.13457,-69.034515,-68.93446,-68.83442,-68.73437,-68.634315,-68.53426,-68.43422,-68.33417,-68.234116,-68.13406,-68.03402,-67.93397,-67.833916,-67.733864,-67.63382,-67.53377,-67.433716,-67.333664,-67.23362,-67.13357,-67.033516,-66.933464,-66.83342,-66.73337,-66.633316,-66.533264,-66.43322,-66.33317,-66.233116,-66.133064,-66.03302,-65.93297,-65.83292,-65.732864,-65.63282,-65.53277,-65.43272,-65.332664,-65.23261,-65.13257,-65.03252,-64.932465,-64.83241,-64.73237,-64.63232,-64.532265,-64.43221,-64.33217,-64.23212,-64.132065,-64.03201,-63.931965,-63.831917,-63.731865,-63.631817,-63.531765,-63.431717,-63.331665,-63.231617,-63.131565,-63.031517,-62.931465,-62.831417,-62.731365,-62.631317,-62.531265,-62.431217,-62.331165,-62.231117,-62.131065,-62.031017,-61.930965,-61.830917,-61.730865,-61.630814,-61.530766,-61.430714,-61.330666,-61.230614,-61.130566,-61.030514,-60.930466,-60.830414,-60.730366,-60.630314,-60.530266,-60.430214,-60.330166,-60.230114,-60.130066,-60.030014,-59.929966,-59.829914,-59.729866,-59.629814,-59.529766,-59.429714,-59.329666,-59.229614,-59.129566,-59.029514,-58.929466,-58.829414,-58.729366,-58.629314,-58.529266,-58.429214,-58.329166,-58.229115,-58.129063,-58.029015,-57.928963,-57.828915,-57.728863,-57.628815,-57.528763,-57.428715,-57.328663,-57.228615,-57.128563,-57.028515,-56.928463,-56.828415,-56.728363,-56.628315,-56.528263,-56.428215,-56.328163,-56.228115,-56.128063,-56.028015,-55.927963,-55.827915,-55.727863,-55.627815,-55.527763,-55.427715,-55.327663,-55.227615,-55.127563,-55.027515,-54.927464,-54.827415,-54.727364,-54.627316,-54.527264,-54.42721,-54.327164,-54.22711,-54.127064,-54.02701,-53.926964,-53.826912,-53.726864,-53.626812,-53.526764,-53.426712,-53.326664,-53.226612,-53.126564,-53.026512,-52.926464,-52.826412,-52.726364,-52.626312,-52.526264,-52.426212,-52.326164,-52.226112,-52.126064,-52.026012,-51.925964,-51.825912,-51.725864,-51.625813,-51.525764,-51.425713,-51.325665,-51.225613,-51.125565,-51.025513,-50.925465,-50.825413,-50.72536,-50.625313,-50.52526,-50.425213,-50.32516,-50.225113,-50.12506,-50.025013,-49.92496,-49.824913,-49.72486,-49.624813,-49.52476,-49.424713,-49.32466,-49.224613,-49.12456,-49.024513,-48.92446,-48.824413,-48.72436,-48.624313,-48.52426,-48.424213,-48.32416,-48.224113,-48.12406,-48.024014,-47.92396,-47.823914,-47.72386,-47.623814,-47.52376,-47.423714,-47.32366,-47.22361,-47.12356,-47.02351,-46.923462,-46.82341,-46.723362,-46.62331,-46.523262,-46.42321,-46.323162,-46.22311,-46.123062,-46.02301,-45.922962,-45.82291,-45.722862,-45.62281,-45.522762,-45.42271,-45.322662,-45.22261,-45.122562,-45.02251,-44.922462,-44.82241,-44.722363,-44.62231,-44.522263,-44.42221,-44.322163,-44.22211,-44.122063,-44.02201,-43.921963,-43.82191,-43.721863,-43.62181,-43.52176,-43.42171,-43.32166,-43.22161,-43.12156,-43.02151,-42.92146,-42.82141,-42.72136,-42.62131,-42.52126,-42.42121,-42.32116,-42.22111,-42.12106,-42.02101,-41.92096,-41.82091,-41.72086,-41.62081,-41.52076,-41.42071,-41.32066,-41.22061,-41.12056,-41.02051,-40.92046,-40.82041,-40.72036,-40.62031,-40.52026,-40.42021,-40.32016,-40.22011,-40.12006,-40.02001,-39.91996,-39.81991,-39.71986,-39.61981,-39.51976,-39.41971,-39.31966,-39.21961,-39.11956,-39.01951,-38.91946,-38.81941,-38.71936,-38.61931,-38.51926,-38.41921,-38.31916,-38.21911,-38.11906,-38.01901,-37.91896,-37.81891,-37.71886,-37.61881,-37.51876,-37.41871,-37.31866,-37.21861,-37.11856,-37.01851,-36.91846,-36.81841,-36.71836,-36.61831,-36.51826,-36.41821,-36.318157,-36.21811,-36.118057,-36.01801,-35.917957,-35.81791,-35.717857,-35.61781,-35.517757,-35.41771,-35.317657,-35.21761,-35.117558,-35.01751,-34.917458,-34.81741,-34.717358,-34.61731,-34.517258,-34.41721,-34.317158,-34.21711,-34.117058,-34.01701,-33.916958,-33.81691,-33.716858,-33.61681,-33.516758,-33.41671,-33.316658,-33.21661,-33.116558,-33.01651,-32.91646,-32.81641,-32.71636,-32.616306,-32.51626,-32.416206,-32.31616,-32.216106,-32.11606,-32.016006,-31.915958,-31.815908,-31.715858,-31.615808,-31.515759,-31.415709,-31.315659,-31.215609,-31.115559,-31.015509,-30.915459,-30.815407,-30.715357,-30.615307,-30.515257,-30.415207,-30.315157,-30.215107,-30.115057,-30.015007,-29.914957,-29.814907,-29.714857,-29.614807,-29.514757,-29.414707,-29.314657,-29.214607,-29.114557,-29.014507,-28.914457,-28.814407,-28.714357,-28.614307,-28.514257,-28.414207,-28.314157,-28.214108,-28.114058,-28.014008,-27.913958,-27.813908,-27.713858,-27.613808,-27.513758,-27.413708,-27.313658,-27.213606,-27.113556,-27.013506,-26.913456,-26.813406,-26.713356,-26.613306,-26.513256,-26.413206,-26.313156,-26.213106,-26.113056,-26.013006,-25.912956,-25.812906,-25.712856,-25.612806,-25.512756,-25.412706,-25.312656,-25.212606,-25.112556,-25.012506,-24.912457,-24.812407,-24.712357,-24.612307,-24.512257,-24.412207,-24.312157,-24.212107,-24.112057,-24.012007,-23.911957,-23.811907,-23.711857,-23.611805,-23.511755,-23.411705,-23.311655,-23.211605,-23.111555,-23.011505,-22.911455,-22.811405,-22.711355,-22.611305,-22.511255,-22.411205,-22.311155,-22.211105,-22.111055,-22.011005,-21.910955,-21.810905,-21.710855,-21.610806,-21.510756,-21.410706,-21.310656,-21.210606,-21.110556,-21.010506,-20.910456,-20.810406,-20.710356,-20.610306,-20.510256,-20.410206,-20.310156,-20.210106,-20.110056,-20.010006,-19.909954,-19.809904,-19.709854,-19.609804,-19.509754,-19.409704,-19.309654,-19.209604,-19.109554,-19.009504,-18.909454,-18.809404,-18.709354,-18.609304,-18.509254,-18.409204,-18.309155,-18.209105,-18.109055,-18.009005,-17.908955,-17.808905,-17.708855,-17.608805,-17.508755,-17.408705,-17.308655,-17.208605,-17.108555,-17.008505,-16.908455,-16.808405,-16.708355,-16.608305,-16.508255,-16.408205,-16.308153,-16.208103,-16.108053,-16.008003,-15.907954,-15.807904,-15.707854,-15.607804,-15.507754,-15.407703,-15.307653,-15.207603,-15.1075535,-15.0075035,-14.907454,-14.807404,-14.707354,-14.607304,-14.507254,-14.407204,-14.307154,-14.207104,-14.107054,-14.007004,-13.906954,-13.806904,-13.706854,-13.606803,-13.506753,-13.406703,-13.306653,-13.206603,-13.106553,-13.006503,-12.906453,-12.806403,-12.706353,-12.606303,-12.506253,-12.406203,-12.306153,-12.206103,-12.106053,-12.006003,-11.905953,-11.8059025,-11.7058525,-11.605803,-11.505753,-11.405703,-11.305653,-11.205603,-11.105553,-11.005503,-10.905453,-10.805403,-10.705353,-10.605303,-10.505253,-10.405203,-10.305153,-10.205103,-10.105053,-10.005003,-9.904952,-9.804902,-9.704852,-9.604802,-9.504752,-9.404702,-9.304652,-9.204602,-9.104552,-9.004502,-8.904452,-8.804402,-8.704352,-8.604302,-8.504252,-8.404202,-8.3041525,-8.2041025,-8.104052,-8.004002,-7.903952,-7.803902,-7.7038517,-7.6038017,-7.5037518,-7.403702,-7.303652,-7.203602,-7.103552,-7.003502,-6.903452,-6.8034015,-6.7033515,-6.6033015,-6.5032516,-6.4032016,-6.3031516,-6.2031016,-6.1030517,-6.0030017,-5.9029512,-5.8029013,-5.7028513,-5.6028013,-5.5027514,-5.4027014,-5.3026514,-5.2026014,-5.1025515,-5.0025015,-4.902451,-4.802401,-4.702351,-4.602301,-4.502251,-4.402201,-4.302151,-4.202101,-4.1020513,-4.002001,-3.901951,-3.8019009,-3.701851,-3.601801,-3.501751,-3.4017007,-3.3016508,-3.2016008,-3.1015508,-3.0015008,-2.9014506,-2.8014007,-2.7013507,-2.6013007,-2.5012507,-2.4012005,-2.3011506,-2.2011006,-2.1010506,-2.0010004,-1.9009504,-1.8009005,-1.7008504,-1.6008004,-1.5007504,-1.4007003,-1.3006504,-1.2006003,-1.1005503,-1.0005002,-0.9004502,-0.8004002,-0.70035017,-0.60030013,-0.5002501,-0.4002001,-0.30015007,-0.20010005,-0.100050025,0.0]} diff --git a/lib/node_modules/@stdlib/math/base/special/trigammaf/test/fixtures/julia/positive.json b/lib/node_modules/@stdlib/math/base/special/trigammaf/test/fixtures/julia/positive.json new file mode 100644 index 000000000000..202a5d52f43d --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/trigammaf/test/fixtures/julia/positive.json @@ -0,0 +1 @@ +{"expected":[null,101.33323,26.242235,12.234077,7.2689104,4.9305964,3.6332216,2.8317974,2.2977026,1.9210994,1.6437323,1.4322755,1.2664906,1.1334745,1.0246643,0.9341807,0.8578691,0.7927195,0.7365027,0.6875367,0.64453006,0.6064761,0.5725801,0.54220617,0.51484025,0.4900625,0.46752703,0.44694614,0.4280789,0.41072202,0.3947029,0.37987405,0.36610872,0.35329738,0.34134492,0.3301684,0.3196952,0.3098614,0.3006105,0.29189247,0.28366292,0.27588198,0.26851422,0.26152778,0.25489387,0.24858661,0.24258256,0.23686045,0.23140098,0.22618651,0.22120097,0.2164297,0.2118592,0.2074771,0.20327201,0.19923347,0.1953518,0.19161806,0.18802395,0.18456185,0.18122458,0.17800558,0.17489865,0.17189808,0.1689985,0.16619489,0.16348258,0.1608572,0.15831465,0.15585105,0.15346283,0.15114655,0.14889903,0.14671725,0.1445984,0.14253975,0.14053883,0.1385932,0.13670063,0.13485898,0.13306622,0.13132043,0.12961979,0.12796259,0.12634715,0.12477197,0.123235516,0.1217364,0.12027328,0.11884487,0.11744995,0.116087355,0.11475599,0.113454774,0.112182714,0.11093883,0.109722205,0.108531944,0.10736721,0.10622718,0.105111085,0.10401818,0.10294775,0.10189911,0.1008716,0.09986459,0.09887747,0.09790965,0.09696059,0.09602973,0.09511656,0.094220586,0.09334132,0.092478305,0.091631085,0.09079924,0.08998235,0.08918002,0.08839187,0.0876175,0.08685659,0.08610877,0.08537371,0.08465108,0.08394058,0.083241895,0.08255474,0.08187883,0.0812139,0.08055967,0.079915896,0.07928232,0.07865871,0.078044824,0.07744044,0.07684535,0.07625932,0.075682156,0.07511366,0.074553646,0.07400191,0.07345828,0.07292257,0.072394624,0.07187425,0.07136131,0.07085564,0.07035708,0.06986548,0.0693807,0.0689026,0.06843104,0.067965895,0.06750702,0.0670543,0.06660761,0.066166826,0.06573184,0.06530253,0.06487879,0.06446052,0.064047605,0.06363994,0.06323743,0.06283997,0.062447485,0.062059868,0.06167703,0.06129889,0.060925353,0.060556337,0.06019177,0.05983156,0.059475634,0.05912392,0.058776338,0.058432817,0.058093287,0.05775768,0.057425927,0.05709796,0.056773722,0.056453142,0.05613616,0.05582272,0.055512756,0.055206217,0.05490304,0.054603178,0.054306574,0.05401317,0.05372292,0.053435773,0.05315168,0.052870587,0.052592453,0.052317232,0.052044872,0.051775333,0.051508572,0.05124454,0.050983205,0.05072452,0.05046845,0.05021495,0.04996398,0.04971551,0.049469497,0.049225908,0.048984703,0.048745852,0.04850932,0.04827507,0.04804307,0.04781329,0.047585692,0.047360256,0.047136944,0.04691573,0.046696577,0.046479467,0.04626436,0.04605124,0.045840073,0.04563083,0.045423493,0.04521803,0.04501442,0.044812627,0.044612642,0.04441443,0.044217974,0.044023246,0.043830223,0.04363889,0.043449216,0.043261185,0.04307477,0.04288996,0.042706728,0.042525053,0.04234492,0.042166304,0.04198919,0.041813552,0.041639384,0.041466657,0.041295357,0.04112547,0.04095697,0.040789846,0.040624082,0.04045966,0.040296562,0.040134773,0.03997428,0.03981506,0.03965711,0.039500404,0.039344933,0.03919068,0.03903763,0.038885772,0.03873509,0.038585573,0.038437206,0.038289975,0.03814387,0.03799887,0.03785497,0.037712157,0.037570417,0.03742974,0.037290107,0.037151515,0.037013948,0.036877397,0.036741853,0.0366073,0.036473725,0.036341123,0.036209483,0.036078792,0.035949044,0.035820223,0.03569232,0.03556533,0.035439238,0.03531404,0.03518972,0.035066277,0.034943692,0.03482196,0.03470108,0.03458103,0.03446181,0.03434341,0.034225818,0.03410903,0.033993036,0.03387783,0.0337634,0.033649743,0.033536844,0.0334247,0.033313308,0.033202656,0.033092733,0.032983538,0.032875057,0.032767292,0.032660227,0.032553863,0.032448187,0.032343198,0.032238882,0.03213524,0.03203226,0.03192994,0.03182827,0.031727247,0.03162686,0.03152711,0.031427983,0.031329483,0.031231593,0.031134317,0.03103764,0.030941563,0.030846082,0.030751185,0.030656874,0.030563135,0.030469973,0.030377371,0.030285334,0.030193852,0.030102922,0.030012535,0.029922694,0.029833384,0.02974461,0.02965636,0.029568633,0.029481422,0.029394727,0.029308537,0.029222853,0.029137667,0.029052978,0.028968778,0.028885067,0.028801836,0.028719086,0.028636806,0.028555,0.028473657,0.028392779,0.028312355,0.02823239,0.028152872,0.028073803,0.027995175,0.027916988,0.027839234,0.027761912,0.02768502,0.027608551,0.027532507,0.027456876,0.027381664,0.027306858,0.027232464,0.02715847,0.027084881,0.027011687,0.026938891,0.026866483,0.026794465,0.02672283,0.026651578,0.026580704,0.026510209,0.026440084,0.02637033,0.026300943,0.02623192,0.026163258,0.026094956,0.026027007,0.025959413,0.025892168,0.025825271,0.02575872,0.02569251,0.025626639,0.025561105,0.025495905,0.025431039,0.0253665,0.025302287,0.0252384,0.025174834,0.025111588,0.025048658,0.024986044,0.02492374,0.02486175,0.024800062,0.024738684,0.024677606,0.024616832,0.024556354,0.024496175,0.024436288,0.024376694,0.024317387,0.024258373,0.02419964,0.024141194,0.024083028,0.024025142,0.023967534,0.023910202,0.023853142,0.023796355,0.023739837,0.023683587,0.023627603,0.023571884,0.023516424,0.023461228,0.023406288,0.023351608,0.02329718,0.023243006,0.02318908,0.023135407,0.023081983,0.023028802,0.02297587,0.022923175,0.022870727,0.022818513,0.022766542,0.022714803,0.0226633,0.02261203,0.022560993,0.022510184,0.022459604,0.02240925,0.022359123,0.022309218,0.022259537,0.022210075,0.022160834,0.022111809,0.022063002,0.022014407,0.021966029,0.021917861,0.021869907,0.021822158,0.021774622,0.021727288,0.021680161,0.021633238,0.021586519,0.02154,0.02149368,0.02144756,0.021401638,0.021355912,0.02131038,0.021265043,0.021219898,0.021174945,0.02113018,0.021085605,0.021041218,0.020997018,0.020953001,0.020909172,0.020865522,0.020822056,0.02077877,0.020735664,0.020692736,0.020649986,0.020607412,0.020565014,0.020522788,0.020480737,0.020438857,0.020397149,0.020355608,0.020314239,0.020273035,0.020232001,0.020191131,0.020150427,0.020109884,0.020069508,0.02002929,0.019989235,0.01994934,0.019909602,0.019870022,0.0198306,0.019791335,0.019752223,0.019713268,0.019674465,0.019635815,0.019597316,0.019558968,0.019520769,0.01948272,0.019444818,0.019407064,0.019369455,0.019331994,0.019294675,0.0192575,0.01922047,0.019183582,0.019146832,0.019110227,0.019073758,0.01903743,0.019001238,0.018965187,0.01892927,0.01889349,0.018857842,0.018822331,0.018786954,0.018751709,0.018716594,0.018681614,0.01864676,0.01861204,0.018577447,0.018542983,0.018508645,0.018474435,0.018440353,0.018406393,0.01837256,0.018338852,0.018305266,0.018271802,0.018238463,0.018205242,0.018172145,0.018139167,0.018106308,0.018073566,0.018040946,0.01800844,0.017976055,0.017943783,0.017911628,0.017879587,0.01784766,0.017815849,0.01778415,0.017752564,0.017721089,0.017689725,0.017658474,0.017627332,0.0175963,0.017565377,0.017534561,0.017503854,0.017473256,0.017442763,0.017412378,0.017382095,0.01735192,0.01732185,0.017291881,0.01726202,0.017232258,0.0172026,0.017173043,0.017143589,0.017114235,0.017084982,0.017055828,0.017026773,0.016997818,0.01696896,0.0169402,0.016911538,0.016882973,0.016854504,0.01682613,0.016797854,0.01676967,0.016741583,0.016713588,0.016685687,0.016657878,0.016630163,0.01660254,0.016575009,0.016547566,0.016520217,0.016492957,0.016465789,0.016438708,0.016411716,0.016384812,0.016357997,0.01633127,0.016304629,0.016278075,0.016251609,0.016225228,0.016198931,0.016172722,0.016146595,0.016120553,0.016094595,0.016068721,0.01604293,0.01601722,0.015991595,0.01596605,0.015940588,0.015915206,0.015889904,0.015864683,0.015839543,0.015814481,0.0157895,0.015764596,0.01573977,0.015715024,0.015690355,0.015665762,0.015641248,0.015616809,0.015592447,0.01556816,0.015543951,0.015519815,0.015495754,0.015471768,0.015447857,0.015424018,0.015400252,0.01537656,0.015352941,0.015329396,0.015305921,0.015282518,0.015259187,0.015235928,0.015212739,0.01518962,0.01516657,0.015143593,0.015120683,0.0150978435,0.015075072,0.015052371,0.015029736,0.015007169,0.01498467,0.01496224,0.014939875,0.014917578,0.014895347,0.014873183,0.014851084,0.01482905,0.014807082,0.01478518,0.014763341,0.014741567,0.014719856,0.014698211,0.014676629,0.0146551095,0.014633653,0.01461226,0.014590929,0.01456966,0.014548453,0.014527307,0.014506225,0.014485202,0.01446424,0.014443338,0.014422498,0.014401716,0.014380995,0.014360333,0.014339732,0.014319188,0.0142987035,0.014278277,0.014257911,0.0142376,0.014217349,0.014197154,0.014177018,0.014156938,0.014136914,0.014116947,0.014097038,0.014077183,0.014057384,0.014037641,0.0140179545,0.013998322,0.013978745,0.013959222,0.013939754,0.01392034,0.013900979,0.013881673,0.013862422,0.013843222,0.013824075,0.0138049815,0.013785941,0.013766953,0.013748017,0.013729133,0.0137103,0.01369152,0.0136727905,0.013654113,0.013635485,0.01361691,0.013598383,0.013579908,0.013561483,0.0135431085,0.013524782,0.013506506,0.013488279,0.013470102,0.013451973,0.013433892,0.013415861,0.013397879,0.013379944,0.013362056,0.013344216,0.013326426,0.013308681,0.013290984,0.013273333,0.013255731,0.013238174,0.013220663,0.013203199,0.013185782,0.0131684095,0.013151083,0.0131338015,0.013116566,0.013099377,0.013082231,0.01306513,0.013048074,0.0130310645,0.013014097,0.012997174,0.012980294,0.012963461,0.012946669,0.01292992,0.012913215,0.012896555,0.012879935,0.012863359,0.012846826,0.012830336,0.012813887,0.0127974795,0.012781114,0.012764793,0.0127485115,0.012732271,0.012716073,0.012699917,0.0126838,0.012667725,0.012651689,0.012635697,0.012619742,0.012603829,0.012587955,0.012572121,0.012556328,0.012540574,0.012524859,0.012509184,0.012493549,0.012477951,0.012462393,0.012446874,0.012431393,0.012415951,0.012400547,0.012385181,0.012369853,0.012354564,0.012339312,0.012324097,0.012308921,0.01229378,0.012278678,0.012263612,0.012248584,0.012233593,0.012218637,0.012203719,0.012188837,0.012173991,0.012159181,0.012144406,0.012129669,0.012114967,0.0121003,0.012085669,0.012071074,0.012056513,0.012041987,0.0120274965,0.0120130405,0.01199862,0.011984233,0.011969881,0.011955563,0.01194128,0.011927031,0.011912815,0.011898633,0.011884486,0.011870372,0.0118562905,0.011842243,0.01182823,0.011814249,0.0118003,0.011786385,0.011772503,0.011758653,0.011744836,0.011731051,0.0117173,0.01170358,0.011689891,0.011676235,0.011662612,0.011649019,0.011635457,0.011621928,0.011608431,0.011594964,0.011581529,0.011568124,0.011554752,0.011541409,0.011528097,0.011514816,0.011501566,0.011488346,0.011475157,0.011461997,0.011448868,0.0114357695,0.0114227,0.011409661,0.011396651,0.011383672,0.011370721,0.0113578,0.011344908,0.011332046,0.011319213,0.011306409,0.011293633,0.011280887,0.01126817,0.01125548,0.011242819,0.0112301875,0.011217584,0.011205008,0.011192461,0.011179943,0.011167451,0.011154987,0.011142551,0.011130144,0.011117764,0.011105411,0.011093085,0.0110807875,0.011068516,0.011056272,0.011044056,0.011031866,0.011019704,0.011007568,0.010995458,0.010983376,0.01097132,0.01095929,0.010947286,0.010935309,0.01092336,0.010911434,0.010899535,0.010887662,0.0108758155,0.010863994,0.010852198,0.010840428,0.010828684,0.010816965,0.010805271,0.010793602,0.01078196,0.010770341,0.010758747,0.010747179,0.010735637,0.010724118,0.010712624,0.010701153,0.010689709,0.010678289,0.010666893,0.0106555205,0.010644174,0.01063285,0.010621551,0.010610276,0.010599024,0.010587797,0.010576593,0.010565413,0.010554256,0.010543124,0.010532014,0.010520928,0.010509864,0.010498825,0.010487809,0.0104768155,0.010465845,0.010454899,0.010443974,0.010433072,0.010422193,0.010411338,0.010400504,0.010389692,0.010378904,0.010368138,0.010357394,0.010346672,0.010335972,0.010325295,0.01031464,0.010304006,0.010293394,0.010282805,0.0102722375,0.01026169,0.010251165,0.010240664,0.010230182,0.010219721,0.010209283,0.010198865,0.01018847,0.010178094,0.01016774,0.010157407,0.010147096,0.010136805,0.010126534,0.010116285,0.010106057,0.010095849,0.010085661,0.010075494,0.010065348,0.010055222,0.010045117,0.010035031,0.010024967,0.010014921,0.010004897,0.0099948915,0.009984908,0.009974943,0.009964997,0.009955072,0.009945167,0.009935281,0.009925415,0.009915569,0.0099057425,0.009895935,0.0098861465,0.009876377,0.009866628,0.009856898,0.0098471865,0.009837495,0.0098278215,0.009818168,0.009808533,0.009798917,0.00978932,0.009779742,0.009770182,0.009760641,0.009751118,0.009741615,0.009732129,0.009722662,0.009713214,0.009703784,0.009694372,0.009684978,0.009675602,0.009666246,0.009656906,0.009647585,0.009638282,0.009628997,0.00961973,0.00961048,0.0096012475,0.009592034,0.009582838,0.009573659,0.0095644975,0.009555354,0.009546228,0.0095371185,0.009528027,0.009518953,0.009509896,0.0095008565,0.009491834,0.009482828,0.009473841,0.009464869,0.009455915,0.009446977,0.009438057,0.009429153,0.009420266,0.0094113955,0.009402543,0.009393706,0.009384885,0.009376082,0.009367295,0.009358524,0.00934977,0.009341031,0.00933231,0.009323604,0.009314915,0.009306243,0.009297586,0.009288945,0.00928032,0.009271711,0.00926312,0.009254542,0.009245981,0.009237436,0.009228907,0.009220393,0.009211895,0.009203413,0.009194946,0.009186495,0.009178059,0.009169639,0.009161235,0.0091528455,0.009144472,0.009136113,0.00912777,0.009119442,0.009111129,0.009102831,0.0090945475,0.009086281,0.009078028,0.00906979,0.0090615675,0.00905336,0.009045167,0.009036989,0.009028825,0.009020677,0.009012543,0.009004423,0.008996318,0.008988229,0.008980153,0.008972092,0.008964045,0.008956013,0.0089479955,0.008939992,0.008932003,0.008924028,0.008916068,0.008908121,0.008900189,0.00889227,0.008884367,0.008876476,0.0088686,0.008860738,0.00885289,0.0088450555,0.008837235,0.008829428,0.0088216355,0.008813856,0.008806091,0.008798339,0.008790601,0.008782877,0.008775166,0.008767468,0.0087597845,0.008752114,0.008744457,0.008736813,0.008729183,0.008721566,0.0087139625,0.008706372,0.008698795,0.008691231,0.00868368,0.0086761415,0.008668617,0.008661105,0.008653607,0.008646121,0.008638648,0.008631188,0.008623742,0.008616308,0.008608886,0.008601477,0.008594082,0.008586698,0.008579328,0.00857197,0.008564625,0.008557293,0.008549972,0.008542665,0.00853537,0.008528087,0.008520816,0.00851356,0.008506314,0.00849908,0.00849186,0.008484651,0.008477455,0.008470271,0.008463098,0.008455939,0.008448791,0.008441655,0.008434531,0.00842742,0.00842032,0.008413232,0.008406157,0.008399093,0.008392041,0.008385001,0.008377972,0.0083709555,0.008363951,0.008356958,0.008349976,0.008343006,0.008336048,0.008329101,0.008322166,0.008315243,0.008308331,0.00830143,0.008294541,0.008287664,0.008280797,0.008273942,0.008267099,0.008260266,0.008253446,0.008246636,0.008239837,0.00823305,0.0082262745,0.008219509,0.008212755,0.008206013,0.008199281,0.008192561,0.00818585,0.008179151,0.008172465,0.008165788,0.0081591215,0.008152466,0.008145823,0.008139189,0.008132567,0.008125955,0.008119354,0.008112764,0.008106184,0.008099615,0.008093056,0.008086509,0.008079972,0.008073445,0.008066929,0.008060425,0.008053929,0.008047445,0.00804097,0.008034507,0.008028054,0.00802161,0.008015177,0.008008756,0.008002344,0.007995942,0.00798955,0.007983169,0.007976797,0.0079704365,0.007964085,0.007957745,0.007951414,0.007945093,0.007938783,0.007932482,0.007926192,0.007919911,0.007913641,0.00790738,0.007901129,0.0078948885,0.007888657,0.007882436,0.007876225,0.007870022,0.007863831,0.007857649,0.007851476,0.007845313,0.007839161,0.007833017,0.007826883,0.007820759,0.007814644,0.0078085386,0.007802443,0.007796357,0.007790281,0.007784214,0.007778156,0.0077721076,0.0077660684,0.007760039,0.0077540185,0.007748008,0.0077420073,0.0077360147,0.007730032,0.007724058,0.0077180937,0.0077121384,0.007706192,0.007700255,0.0076943277,0.007688409,0.0076824995,0.007676599,0.0076707075,0.007664825,0.0076589515,0.007653087,0.0076472317,0.007641386,0.0076355482,0.0076297196,0.0076238997,0.0076180887,0.0076122866,0.0076064933,0.007600709,0.007594934,0.0075891674,0.007583409,0.00757766,0.007571919,0.007566187,0.0075604636,0.007554749,0.0075490437,0.0075433464,0.007537658,0.0075319773,0.0075263055,0.0075206426,0.007514988,0.0075093415,0.007503705,0.0074980757,0.0074924547,0.0074868426,0.0074812383,0.007475643,0.007470056,0.007464477,0.007458906,0.0074533448,0.007447791,0.0074422453,0.007436708,0.007431179,0.0074256575,0.007420145,0.0074146404,0.0074091447,0.0074036564,0.0073981765,0.007392704,0.0073872404,0.0073817843,0.0073763365,0.0073708966,0.0073654656,0.007360042,0.007354626,0.0073492182,0.0073438184,0.007338426,0.007333042,0.007327666,0.0073222984,0.007316938,0.0073115854,0.007306241,0.007300904,0.0072955745,0.0072902534,0.0072849398,0.0072796345,0.007274336,0.007269046,0.007263763,0.007258488,0.007253221,0.0072479607,0.0072427085,0.007237464,0.007232228,0.0072269985,0.0072217765,0.007216562,0.0072113555,0.007206156,0.0072009643,0.00719578,0.0071906038,0.0071854345,0.0071802726,0.0071751177,0.007169971,0.007164831,0.0071596983,0.007154573,0.0071494565,0.007144346,0.0071392427,0.007134147,0.0071290582,0.007123977,0.007118903,0.0071138362,0.0071087773,0.007103725,0.0070986794,0.0070936414,0.0070886104,0.0070835864,0.00707857,0.00707356,0.007068557,0.0070635625,0.0070585744,0.0070535927,0.0070486185,0.0070436513,0.0070386906,0.0070337374,0.007028791,0.0070238523,0.0070189196,0.0070139943,0.0070090755,0.0070041637,0.006999259,0.0069943606,0.0069894693,0.006984586,0.006979708,0.0069748377,0.0069699734,0.0069651166,0.0069602663,0.0069554225,0.0069505856,0.0069457563,0.0069409325,0.0069361157,0.006931306,0.006926502,0.0069217053,0.006916915,0.006912132,0.0069073555,0.0069025853,0.0068978216,0.0068930644,0.0068883137,0.0068835695,0.0068788324,0.0068741012,0.0068693766,0.0068646595,0.006859948,0.006855243,0.006850544,0.006845852,0.006841166,0.006836487,0.0068318136,0.006827148,0.006822488,0.006817834,0.006813186,0.006808545,0.0068039102,0.0067992816,0.0067946594,0.0067900443,0.0067854347,0.006780831,0.0067762337,0.0067716427,0.0067670583,0.0067624794,0.006757907,0.0067533418,0.0067487815,0.006744228,0.00673968,0.0067351386,0.006730603,0.0067260736,0.00672155,0.006717033,0.0067125224,0.0067080176,0.0067035183,0.0066990256,0.0066945385,0.0066900575,0.0066855825,0.0066811135,0.006676651,0.0066721938,0.006667743,0.006663298,0.006658858,0.006654425,0.0066499976,0.006645576,0.0066411607,0.006636751,0.006632347,0.006627949,0.0066235564,0.00661917,0.0066147894,0.0066104145,0.006606046,0.006601683,0.006597325,0.006592973,0.006588627,0.0065842867,0.0065799523,0.006575623,0.0065713003,0.0065669827,0.006562671,0.0065583647,0.0065540643,0.006549769,0.00654548,0.0065411963,0.0065369178,0.0065326462,0.006528379,0.0065241177,0.006519862,0.0065156114,0.006511367,0.0065071275,0.006502894,0.0064986665,0.006494444,0.0064902264,0.006486015,0.0064818086,0.006477608,0.0064734123,0.0064692223,0.0064650383,0.0064608594,0.0064566857,0.006452517,0.006448354,0.0064441967,0.0064400444,0.0064358977,0.0064317565,0.0064276205,0.0064234897,0.006419364,0.0064152437,0.0064111287,0.0064070188,0.0064029144,0.006398815,0.006394722,0.006390633,0.0063865497,0.0063824714,0.0063783983,0.0063743303,0.006370268,0.00636621,0.0063621583,0.0063581113,0.006354069,0.006350032,0.0063460004,0.006341974,0.006337952,0.0063339355,0.006329925,0.0063259182,0.0063219173,0.006317921,0.00631393,0.0063099437,0.006305963,0.0063019865,0.0062980163,0.0062940503,0.006290089,0.006286133,0.006282182,0.006278236,0.0062742946,0.0062703583,0.006266427,0.0062625012,0.00625858,0.006254663,0.0062507517,0.006246845,0.006242943,0.006239046,0.006235154,0.006231267,0.006227385,0.006223507,0.0062196343,0.006215766,0.006211903,0.006208045,0.006204191,0.006200343,0.006196499,0.0061926595,0.0061888252,0.0061849956,0.00618117,0.00617735,0.0061735343,0.0061697243,0.006165918,0.006162117,0.00615832,0.006154528,0.00615074,0.0061469576,0.0061431793,0.0061394065,0.0061356374,0.0061318735,0.0061281137,0.0061243586,0.006120608,0.0061168624,0.0061131213,0.006109385,0.006105653,0.0061019254,0.0060982024,0.006094484,0.00609077,0.0060870606,0.0060833558,0.0060796556,0.00607596,0.006072269,0.0060685817,0.0060648993,0.0060612215,0.006057548,0.006053879,0.006050214,0.0060465545,0.006042899,0.0060392474,0.006035601,0.006031958,0.00602832,0.006024686,0.006021057,0.0060174325,0.0060138116,0.0060101957,0.0060065836,0.006002976,0.005999373,0.0059957737,0.0059921793,0.005988589,0.0059850034,0.0059814216,0.0059778444,0.005974271,0.005970702,0.0059671374,0.005963577,0.0059600207,0.0059564696,0.0059529217,0.0059493785,0.0059458395,0.005942304,0.0059387735,0.0059352466,0.0059317243,0.0059282067,0.0059246924,0.0059211827,0.0059176767,0.005914175,0.005910678,0.0059071844,0.0059036952,0.0059002107,0.0058967294,0.005893253,0.00588978,0.005886311,0.0058828467,0.005879386,0.0058759297,0.005872478,0.0058690296,0.005865585,0.0058621448,0.0058587086,0.0058552762,0.005851848,0.005848424,0.0058450038,0.005841588,0.005838176,0.0058347676,0.0058313636,0.0058279634,0.005824567,0.0058211745,0.0058177863,0.0058144024,0.0058110217,0.005807645,0.005804273,0.005800904,0.005797539,0.005794178,0.0057908213,0.0057874685,0.005784119,0.0057807737,0.005777432,0.0057740947,0.0057707606,0.0057674306,0.005764105,0.005760783,0.0057574646,0.00575415,0.005750839,0.005747532,0.0057442286,0.0057409294,0.005737634,0.0057343417,0.005731054,0.00572777,0.005724489,0.005721213,0.0057179397,0.0057146703,0.0057114046,0.005708143,0.0057048853,0.005701631,0.00569838,0.005695133,0.00569189,0.0056886505,0.0056854147,0.005682182,0.005678954,0.0056757294,0.005672508,0.0056692907,0.0056660767,0.0056628664,0.00565966,0.0056564566,0.005653258,0.005650062,0.00564687,0.005643681,0.0056404965,0.005637315,0.005634137,0.005630963,0.0056277923,0.005624626,0.005621462,0.005618302,0.005615146,0.005611993,0.0056088436,0.005605698,0.005602556,0.0055994177,0.0055962824,0.0055931504,0.0055900225,0.0055868975,0.0055837766,0.0055806586,0.0055775447,0.005574434,0.0055713267,0.005568223,0.0055651227,0.0055620256,0.005558932,0.005555842,0.0055527557,0.005549673,0.005546593,0.005543517,0.005540444,0.0055373744,0.005534308,0.0055312454,0.005528186,0.005525131,0.005522078,0.0055190288,0.005515983,0.00551294,0.0055099013,0.005506865,0.005503833,0.0055008037,0.0054977788,0.005494756,0.005491737,0.005488721,0.005485709,0.0054826993,0.0054796934,0.005476691,0.005473692,0.005470696,0.005467703,0.0054647136,0.0054617277,0.0054587447,0.005455765,0.0054527884,0.0054498157,0.0054468457,0.005443879,0.0054409155,0.0054379553,0.0054349983,0.005432044,0.0054290937,0.0054261466,0.0054232026,0.0054202615,0.0054173237,0.005414389,0.0054114573,0.005408529,0.005405604,0.005402682,0.0053997636,0.005396848,0.0053939354,0.005391026,0.0053881197,0.005385217,0.0053823167,0.00537942,0.0053765266,0.005373636,0.005370748,0.005367864,0.0053649824,0.005362104,0.005359229,0.005356357,0.0053534885,0.005350623,0.00534776,0.0053449,0.005342043,0.0053391894,0.0053363387,0.005333491,0.0053306473,0.0053278054,0.005324967,0.005322132,0.005319299,0.00531647,0.0053136433,0.00531082,0.005308,0.005305182,0.0053023677,0.0052995565,0.005296748,0.0052939425,0.0052911397,0.00528834,0.005285544,0.0052827504,0.0052799596,0.005277172,0.005274387,0.005271605,0.005268826,0.0052660503,0.0052632773,0.0052605076,0.00525774,0.005254976,0.005252214,0.005249456,0.0052467003,0.0052439473,0.0052411975,0.005238451,0.005235707,0.0052329656,0.005230227,0.0052274917,0.005224759,0.005222029,0.005219302,0.0052165785,0.005213857,0.005211139,0.0052084234,0.0052057104,0.0052030007,0.0052002934,0.0051975893,0.005194888,0.0051921895,0.0051894938,0.0051868004,0.0051841103,0.005181423,0.005178738,0.005176056,0.005173377,0.005170701,0.0051680272,0.0051653567,0.0051626884,0.005160023,0.005157361,0.005154701,0.0051520434,0.0051493896,0.005146738,0.005144089,0.005141443,0.0051387995,0.005136159,0.005133521,0.0051308856,0.0051282533,0.005125623,0.005122996,0.0051203715,0.00511775,0.0051151305,0.0051125144,0.0051099006,0.0051072896,0.005104681,0.0051020756,0.005099472,0.005096872,0.005094274,0.005091679,0.0050890865,0.0050864965,0.0050839097,0.005081325,0.0050787427,0.0050761634,0.0050735865,0.005071013,0.005068441,0.005065872,0.005063306,0.0050607426,0.0050581815,0.0050556227,0.0050530666,0.0050505134,0.0050479625,0.0050454144,0.005042869,0.005040326,0.0050377855,0.0050352477,0.005032712,0.0050301794,0.005027649,0.0050251214,0.0050225966,0.0050200736,0.0050175535,0.005015036,0.005012521],"x":[0.0,0.100050025,0.20010005,0.30015007,0.4002001,0.5002501,0.60030013,0.70035017,0.8004002,0.9004502,1.0005002,1.1005503,1.2006003,1.3006504,1.4007003,1.5007504,1.6008004,1.7008504,1.8009005,1.9009504,2.0010004,2.1010506,2.2011006,2.3011506,2.4012005,2.5012507,2.6013007,2.7013507,2.8014007,2.9014506,3.0015008,3.1015508,3.2016008,3.3016508,3.4017007,3.501751,3.601801,3.701851,3.8019009,3.901951,4.002001,4.1020513,4.202101,4.302151,4.402201,4.502251,4.602301,4.702351,4.802401,4.902451,5.0025015,5.1025515,5.2026014,5.3026514,5.4027014,5.5027514,5.6028013,5.7028513,5.8029013,5.9029512,6.0030017,6.1030517,6.2031016,6.3031516,6.4032016,6.5032516,6.6033015,6.7033515,6.8034015,6.903452,7.003502,7.103552,7.203602,7.303652,7.403702,7.5037518,7.6038017,7.7038517,7.803902,7.903952,8.004002,8.104052,8.2041025,8.3041525,8.404202,8.504252,8.604302,8.704352,8.804402,8.904452,9.004502,9.104552,9.204602,9.304652,9.404702,9.504752,9.604802,9.704852,9.804902,9.904952,10.005003,10.105053,10.205103,10.305153,10.405203,10.505253,10.605303,10.705353,10.805403,10.905453,11.005503,11.105553,11.205603,11.305653,11.405703,11.505753,11.605803,11.7058525,11.8059025,11.905953,12.006003,12.106053,12.206103,12.306153,12.406203,12.506253,12.606303,12.706353,12.806403,12.906453,13.006503,13.106553,13.206603,13.306653,13.406703,13.506753,13.606803,13.706854,13.806904,13.906954,14.007004,14.107054,14.207104,14.307154,14.407204,14.507254,14.607304,14.707354,14.807404,14.907454,15.0075035,15.1075535,15.207603,15.307653,15.407703,15.507754,15.607804,15.707854,15.807904,15.907954,16.008003,16.108053,16.208103,16.308153,16.408205,16.508255,16.608305,16.708355,16.808405,16.908455,17.008505,17.108555,17.208605,17.308655,17.408705,17.508755,17.608805,17.708855,17.808905,17.908955,18.009005,18.109055,18.209105,18.309155,18.409204,18.509254,18.609304,18.709354,18.809404,18.909454,19.009504,19.109554,19.209604,19.309654,19.409704,19.509754,19.609804,19.709854,19.809904,19.909954,20.010006,20.110056,20.210106,20.310156,20.410206,20.510256,20.610306,20.710356,20.810406,20.910456,21.010506,21.110556,21.210606,21.310656,21.410706,21.510756,21.610806,21.710855,21.810905,21.910955,22.011005,22.111055,22.211105,22.311155,22.411205,22.511255,22.611305,22.711355,22.811405,22.911455,23.011505,23.111555,23.211605,23.311655,23.411705,23.511755,23.611805,23.711857,23.811907,23.911957,24.012007,24.112057,24.212107,24.312157,24.412207,24.512257,24.612307,24.712357,24.812407,24.912457,25.012506,25.112556,25.212606,25.312656,25.412706,25.512756,25.612806,25.712856,25.812906,25.912956,26.013006,26.113056,26.213106,26.313156,26.413206,26.513256,26.613306,26.713356,26.813406,26.913456,27.013506,27.113556,27.213606,27.313658,27.413708,27.513758,27.613808,27.713858,27.813908,27.913958,28.014008,28.114058,28.214108,28.314157,28.414207,28.514257,28.614307,28.714357,28.814407,28.914457,29.014507,29.114557,29.214607,29.314657,29.414707,29.514757,29.614807,29.714857,29.814907,29.914957,30.015007,30.115057,30.215107,30.315157,30.415207,30.515257,30.615307,30.715357,30.815407,30.915459,31.015509,31.115559,31.215609,31.315659,31.415709,31.515759,31.615808,31.715858,31.815908,31.915958,32.016006,32.11606,32.216106,32.31616,32.416206,32.51626,32.616306,32.71636,32.81641,32.91646,33.01651,33.116558,33.21661,33.316658,33.41671,33.516758,33.61681,33.716858,33.81691,33.916958,34.01701,34.117058,34.21711,34.317158,34.41721,34.517258,34.61731,34.717358,34.81741,34.917458,35.01751,35.117558,35.21761,35.317657,35.41771,35.517757,35.61781,35.717857,35.81791,35.917957,36.01801,36.118057,36.21811,36.318157,36.41821,36.51826,36.61831,36.71836,36.81841,36.91846,37.01851,37.11856,37.21861,37.31866,37.41871,37.51876,37.61881,37.71886,37.81891,37.91896,38.01901,38.11906,38.21911,38.31916,38.41921,38.51926,38.61931,38.71936,38.81941,38.91946,39.01951,39.11956,39.21961,39.31966,39.41971,39.51976,39.61981,39.71986,39.81991,39.91996,40.02001,40.12006,40.22011,40.32016,40.42021,40.52026,40.62031,40.72036,40.82041,40.92046,41.02051,41.12056,41.22061,41.32066,41.42071,41.52076,41.62081,41.72086,41.82091,41.92096,42.02101,42.12106,42.22111,42.32116,42.42121,42.52126,42.62131,42.72136,42.82141,42.92146,43.02151,43.12156,43.22161,43.32166,43.42171,43.52176,43.62181,43.721863,43.82191,43.921963,44.02201,44.122063,44.22211,44.322163,44.42221,44.522263,44.62231,44.722363,44.82241,44.922462,45.02251,45.122562,45.22261,45.322662,45.42271,45.522762,45.62281,45.722862,45.82291,45.922962,46.02301,46.123062,46.22311,46.323162,46.42321,46.523262,46.62331,46.723362,46.82341,46.923462,47.02351,47.12356,47.22361,47.32366,47.423714,47.52376,47.623814,47.72386,47.823914,47.92396,48.024014,48.12406,48.224113,48.32416,48.424213,48.52426,48.624313,48.72436,48.824413,48.92446,49.024513,49.12456,49.224613,49.32466,49.424713,49.52476,49.624813,49.72486,49.824913,49.92496,50.025013,50.12506,50.225113,50.32516,50.425213,50.52526,50.625313,50.72536,50.825413,50.925465,51.025513,51.125565,51.225613,51.325665,51.425713,51.525764,51.625813,51.725864,51.825912,51.925964,52.026012,52.126064,52.226112,52.326164,52.426212,52.526264,52.626312,52.726364,52.826412,52.926464,53.026512,53.126564,53.226612,53.326664,53.426712,53.526764,53.626812,53.726864,53.826912,53.926964,54.02701,54.127064,54.22711,54.327164,54.42721,54.527264,54.627316,54.727364,54.827415,54.927464,55.027515,55.127563,55.227615,55.327663,55.427715,55.527763,55.627815,55.727863,55.827915,55.927963,56.028015,56.128063,56.228115,56.328163,56.428215,56.528263,56.628315,56.728363,56.828415,56.928463,57.028515,57.128563,57.228615,57.328663,57.428715,57.528763,57.628815,57.728863,57.828915,57.928963,58.029015,58.129063,58.229115,58.329166,58.429214,58.529266,58.629314,58.729366,58.829414,58.929466,59.029514,59.129566,59.229614,59.329666,59.429714,59.529766,59.629814,59.729866,59.829914,59.929966,60.030014,60.130066,60.230114,60.330166,60.430214,60.530266,60.630314,60.730366,60.830414,60.930466,61.030514,61.130566,61.230614,61.330666,61.430714,61.530766,61.630814,61.730865,61.830917,61.930965,62.031017,62.131065,62.231117,62.331165,62.431217,62.531265,62.631317,62.731365,62.831417,62.931465,63.031517,63.131565,63.231617,63.331665,63.431717,63.531765,63.631817,63.731865,63.831917,63.931965,64.03201,64.132065,64.23212,64.33217,64.43221,64.532265,64.63232,64.73237,64.83241,64.932465,65.03252,65.13257,65.23261,65.332664,65.43272,65.53277,65.63282,65.732864,65.83292,65.93297,66.03302,66.133064,66.233116,66.33317,66.43322,66.533264,66.633316,66.73337,66.83342,66.933464,67.033516,67.13357,67.23362,67.333664,67.433716,67.53377,67.63382,67.733864,67.833916,67.93397,68.03402,68.13406,68.234116,68.33417,68.43422,68.53426,68.634315,68.73437,68.83442,68.93446,69.034515,69.13457,69.23462,69.33467,69.434715,69.53477,69.63482,69.73487,69.834915,69.93497,70.03502,70.13507,70.235115,70.33517,70.43522,70.53527,70.635315,70.73537,70.83542,70.93547,71.035515,71.13557,71.23562,71.33567,71.435715,71.53577,71.63582,71.73587,71.835915,71.93597,72.03602,72.13607,72.236115,72.33617,72.43622,72.53627,72.636314,72.73637,72.83642,72.93647,73.03652,73.136566,73.23662,73.33667,73.43672,73.536766,73.63682,73.73687,73.83692,73.936966,74.03702,74.13707,74.23712,74.337166,74.43722,74.53727,74.63732,74.737366,74.83742,74.93747,75.03752,75.137566,75.23762,75.33767,75.43772,75.537766,75.63782,75.73787,75.83792,75.937965,76.03802,76.13807,76.23812,76.338165,76.43822,76.53827,76.63832,76.73837,76.83842,76.93847,77.03852,77.13857,77.23862,77.33867,77.43872,77.53877,77.63882,77.73887,77.83892,77.93897,78.03902,78.13907,78.23912,78.33917,78.43922,78.53927,78.63932,78.73937,78.83942,78.93947,79.03952,79.13957,79.23962,79.33967,79.43972,79.53977,79.63982,79.73987,79.83992,79.93997,80.04002,80.14007,80.24012,80.34017,80.44022,80.54027,80.64032,80.74037,80.84042,80.94047,81.04052,81.14057,81.24062,81.34067,81.44072,81.54077,81.64082,81.74087,81.84092,81.94097,82.04102,82.14107,82.24112,82.34117,82.44122,82.54127,82.64132,82.74137,82.84142,82.94147,83.04152,83.14157,83.24162,83.34167,83.44172,83.54177,83.64182,83.741875,83.84192,83.94197,84.04202,84.142075,84.24212,84.34217,84.44222,84.542274,84.64232,84.74237,84.84242,84.942474,85.04252,85.14257,85.24262,85.342674,85.44272,85.54277,85.64282,85.742874,85.84292,85.94297,86.04302,86.143074,86.24312,86.34317,86.44322,86.543274,86.64332,86.74337,86.84342,86.943474,87.04352,87.14357,87.24362,87.34367,87.443726,87.54377,87.64382,87.74387,87.843925,87.94397,88.04402,88.14407,88.244125,88.34417,88.44422,88.54427,88.644325,88.74437,88.84442,88.94447,89.044525,89.14457,89.24462,89.34467,89.444725,89.54477,89.64482,89.74487,89.844925,89.94497,90.04502,90.14507,90.245125,90.34517,90.44522,90.54527,90.645325,90.74537,90.84542,90.94547,91.045525,91.14558,91.24562,91.34567,91.445724,91.54578,91.64582,91.74587,91.845924,91.94598,92.04602,92.14607,92.246124,92.346176,92.44622,92.54627,92.646324,92.746376,92.84642,92.94647,93.046524,93.146576,93.24662,93.34667,93.446724,93.546776,93.64682,93.74687,93.846924,93.946976,94.04702,94.14707,94.24712,94.347176,94.44722,94.54727,94.64732,94.747375,94.84743,94.94747,95.04752,95.147575,95.24763,95.34767,95.44772,95.547775,95.64783,95.74787,95.84792,95.947975,96.04803,96.14807,96.24812,96.348175,96.44823,96.54827,96.64832,96.748375,96.84843,96.94847,97.04852,97.148575,97.24863,97.34867,97.44872,97.548775,97.64883,97.74887,97.84892,97.948975,98.04903,98.14907,98.24912,98.349174,98.44923,98.54928,98.64932,98.749374,98.84943,98.94948,99.04952,99.149574,99.249626,99.34968,99.44972,99.549774,99.649826,99.74988,99.84992,99.949974,100.050026,100.15008,100.25012,100.350174,100.450226,100.55028,100.65032,100.750374,100.850426,100.95048,101.05052,101.15057,101.250626,101.35068,101.45072,101.55077,101.650826,101.75088,101.85093,101.95097,102.051025,102.15108,102.25113,102.35117,102.451225,102.55128,102.65133,102.75137,102.851425,102.95148,103.05153,103.15157,103.251625,103.35168,103.45173,103.55177,103.651825,103.75188,103.85193,103.95197,104.052025,104.15208,104.25213,104.35217,104.452225,104.55228,104.65233,104.75237,104.852425,104.95248,105.05253,105.15257,105.252625,105.35268,105.45273,105.55278,105.652824,105.75288,105.85293,105.95298,106.053024,106.153076,106.25313,106.35318,106.453224,106.553276,106.65333,106.75338,106.853424,106.953476,107.05353,107.15358,107.253624,107.353676,107.45373,107.55378,107.653824,107.753876,107.85393,107.95398,108.05402,108.154076,108.25413,108.35418,108.45422,108.554276,108.65433,108.75438,108.85442,108.954475,109.05453,109.15458,109.25463,109.354675,109.45473,109.55478,109.65483,109.754875,109.85493,109.95498,110.05503,110.155075,110.25513,110.35518,110.45523,110.555275,110.65533,110.75538,110.85543,110.955475,111.05553,111.15558,111.25563,111.355675,111.45573,111.55578,111.65583,111.755875,111.85593,111.95598,112.05603,112.156075,112.25613,112.35618,112.45623,112.556274,112.65633,112.75638,112.85643,112.95648,113.056526,113.15658,113.25663,113.35668,113.456726,113.55678,113.65683,113.75688,113.856926,113.95698,114.05703,114.15708,114.257126,114.35718,114.45723,114.55728,114.657326,114.75738,114.85743,114.95748,115.057526,115.15758,115.25763,115.35768,115.457726,115.55778,115.65783,115.75788,115.857925,115.95798,116.05803,116.15808,116.258125,116.35818,116.45823,116.55828,116.65833,116.75838,116.85843,116.95848,117.05853,117.15858,117.25863,117.35868,117.45873,117.55878,117.65883,117.75888,117.85893,117.95898,118.05903,118.15908,118.25913,118.35918,118.45923,118.55928,118.65933,118.75938,118.85943,118.95948,119.05953,119.15958,119.25963,119.35968,119.45973,119.55978,119.65983,119.75988,119.85993,119.95998,120.06003,120.16008,120.26013,120.36018,120.46023,120.56028,120.66033,120.76038,120.86043,120.96048,121.06053,121.16058,121.26063,121.36068,121.46073,121.56078,121.66083,121.76088,121.86093,121.96098,122.06103,122.16108,122.26113,122.36118,122.46123,122.56128,122.66133,122.76138,122.86143,122.96148,123.06153,123.16158,123.26163,123.36168,123.46173,123.56178,123.661835,123.76188,123.86193,123.96198,124.062035,124.16208,124.26213,124.36218,124.462234,124.56228,124.66233,124.76238,124.862434,124.96248,125.06253,125.16258,125.262634,125.36268,125.46273,125.56278,125.662834,125.76288,125.86293,125.96298,126.063034,126.16308,126.26313,126.36318,126.463234,126.56328,126.66333,126.76338,126.863434,126.96348,127.06353,127.16358,127.26363,127.363686,127.46373,127.56378,127.66383,127.763885,127.86393,127.96398,128.06403,128.16408,128.26413,128.36418,128.46423,128.56429,128.66434,128.76439,128.86443,128.96448,129.06453,129.16458,129.26463,129.36469,129.46474,129.56479,129.66483,129.76488,129.86493,129.96498,130.06503,130.16508,130.26514,130.36519,130.46523,130.56528,130.66533,130.76538,130.86543,130.96548,131.06554,131.16559,131.26564,131.36568,131.46573,131.56578,131.66583,131.76588,131.86594,131.96599,132.06604,132.16608,132.26613,132.36618,132.46623,132.56628,132.66634,132.76639,132.86644,132.96648,133.06653,133.16658,133.26663,133.36668,133.46674,133.56679,133.66684,133.76688,133.86693,133.96698,134.06703,134.16708,134.26714,134.36719,134.46724,134.56729,134.66733,134.76738,134.86743,134.96748,135.06754,135.16759,135.26764,135.36769,135.46773,135.56778,135.66783,135.76788,135.86794,135.96799,136.06804,136.16809,136.26813,136.36818,136.46823,136.56828,136.66833,136.76839,136.86844,136.96849,137.06853,137.16858,137.26863,137.36868,137.46873,137.56879,137.66884,137.76889,137.86893,137.96898,138.06903,138.16908,138.26913,138.36919,138.46924,138.56929,138.66934,138.76938,138.86943,138.96948,139.06953,139.16959,139.26964,139.36969,139.46974,139.56978,139.66983,139.76988,139.86993,139.96999,140.07004,140.17009,140.27014,140.37018,140.47023,140.57028,140.67033,140.77039,140.87044,140.97049,141.07054,141.17058,141.27063,141.37068,141.47073,141.57079,141.67084,141.77089,141.87094,141.971,142.07103,142.17108,142.27113,142.37119,142.47124,142.57129,142.67134,142.7714,142.87143,142.97148,143.07153,143.17159,143.27164,143.37169,143.47174,143.5718,143.67183,143.77188,143.87193,143.97198,144.07204,144.17209,144.27214,144.3722,144.47223,144.57228,144.67233,144.77238,144.87244,144.97249,145.07254,145.17259,145.27263,145.37268,145.47273,145.57278,145.67284,145.77289,145.87294,145.97299,146.07304,146.17308,146.27313,146.37318,146.47324,146.57329,146.67334,146.77339,146.87344,146.97348,147.07353,147.17358,147.27364,147.37369,147.47374,147.57379,147.67384,147.77388,147.87393,147.97398,148.07404,148.17409,148.27414,148.37419,148.47424,148.57428,148.67433,148.77438,148.87444,148.97449,149.07454,149.17459,149.27464,149.3747,149.47473,149.57478,149.67484,149.77489,149.87494,149.97499,150.07504,150.1751,150.27513,150.37518,150.47523,150.57529,150.67534,150.77539,150.87544,150.9755,151.07553,151.17558,151.27563,151.37569,151.47574,151.57579,151.67584,151.7759,151.87593,151.97598,152.07603,152.17609,152.27614,152.37619,152.47624,152.5763,152.67633,152.77638,152.87643,152.97649,153.07654,153.17659,153.27664,153.3767,153.47675,153.57678,153.67683,153.77689,153.87694,153.97699,154.07704,154.1771,154.27715,154.37718,154.47723,154.57729,154.67734,154.77739,154.87744,154.9775,155.07755,155.17758,155.27763,155.37769,155.47774,155.57779,155.67784,155.7779,155.87794,155.97798,156.07803,156.17809,156.27814,156.37819,156.47824,156.5783,156.67834,156.7784,156.87843,156.97849,157.07854,157.17859,157.27864,157.3787,157.47874,157.5788,157.67883,157.77888,157.87894,157.97899,158.07904,158.1791,158.27914,158.3792,158.47923,158.57928,158.67934,158.77939,158.87944,158.97949,159.07954,159.1796,159.27963,159.37968,159.47974,159.57979,159.67984,159.77989,159.87994,159.98,160.08005,160.18008,160.28014,160.38019,160.48024,160.58029,160.68034,160.7804,160.88045,160.98048,161.08054,161.18059,161.28064,161.38069,161.48074,161.5808,161.68085,161.78088,161.88094,161.98099,162.08104,162.18109,162.28114,162.3812,162.48125,162.58128,162.68134,162.78139,162.88144,162.98149,163.08154,163.1816,163.28165,163.38168,163.48174,163.58179,163.68184,163.78189,163.88194,163.982,164.08205,164.1821,164.28214,164.38219,164.48224,164.58229,164.68234,164.7824,164.88245,164.9825,165.08253,165.18259,165.28264,165.38269,165.48274,165.5828,165.68285,165.7829,165.88293,165.98299,166.08304,166.18309,166.28314,166.3832,166.48325,166.5833,166.68333,166.78339,166.88344,166.98349,167.08354,167.1836,167.28365,167.3837,167.48375,167.58379,167.68384,167.78389,167.88394,167.984,168.08405,168.1841,168.28415,168.38419,168.48424,168.58429,168.68434,168.7844,168.88445,168.9845,169.08455,169.18459,169.28464,169.38469,169.48474,169.5848,169.68484,169.7849,169.88495,169.98499,170.08504,170.18509,170.28514,170.3852,170.48524,170.5853,170.68535,170.78539,170.88544,170.98549,171.08554,171.1856,171.28564,171.3857,171.48575,171.5858,171.68584,171.78589,171.88594,171.986,172.08604,172.1861,172.28615,172.3862,172.48624,172.58629,172.68634,172.78639,172.88644,172.9865,173.08655,173.1866,173.28664,173.38669,173.48674,173.58679,173.68684,173.7869,173.88695,173.987,174.08704,174.18709,174.28714,174.38719,174.48724,174.5873,174.68735,174.7874,174.88745,174.98749,175.08754,175.18759,175.28764,175.3877,175.48775,175.5878,175.68785,175.78789,175.88794,175.98799,176.08804,176.1881,176.28815,176.3882,176.48825,176.58829,176.68834,176.78839,176.88844,176.9885,177.08855,177.1886,177.28865,177.38869,177.48874,177.58879,177.68884,177.7889,177.88895,177.989,178.08905,178.1891,178.28914,178.38919,178.48924,178.5893,178.68935,178.7894,178.88945,178.9895,179.08954,179.18959,179.28964,179.3897,179.48975,179.5898,179.68985,179.7899,179.88994,179.98999,180.09004,180.1901,180.29015,180.3902,180.49025,180.5903,180.69034,180.79039,180.89044,180.9905,181.09055,181.1906,181.29065,181.3907,181.49074,181.59079,181.69084,181.7909,181.89095,181.991,182.09105,182.1911,182.29115,182.39119,182.49124,182.5913,182.69135,182.7914,182.89145,182.9915,183.09155,183.19159,183.29164,183.3917,183.49174,183.5918,183.69185,183.7919,183.89195,183.99199,184.09204,184.1921,184.29214,184.3922,184.49225,184.5923,184.69235,184.79239,184.89244,184.9925,185.09254,185.1926,185.29265,185.3927,185.49275,185.5928,185.69284,185.7929,185.89294,185.993,186.09305,186.1931,186.29315,186.3932,186.49324,186.59329,186.69334,186.7934,186.89345,186.9935,187.09355,187.1936,187.29364,187.39369,187.49374,187.5938,187.69385,187.7939,187.89395,187.994,188.09404,188.19409,188.29414,188.3942,188.49425,188.5943,188.69435,188.7944,188.89444,188.99449,189.09454,189.1946,189.29465,189.3947,189.49475,189.5948,189.69485,189.79489,189.89494,189.995,190.09505,190.1951,190.29515,190.3952,190.49525,190.59529,190.69534,190.7954,190.89545,190.9955,191.09555,191.1956,191.29565,191.39569,191.49574,191.5958,191.69585,191.7959,191.89595,191.996,192.09605,192.19609,192.29614,192.3962,192.49625,192.5963,192.69635,192.7964,192.89645,192.9965,193.09654,193.1966,193.29665,193.3967,193.49675,193.5968,193.69685,193.7969,193.89694,193.997,194.09705,194.1971,194.29715,194.3972,194.49725,194.5973,194.69734,194.7974,194.89745,194.9975,195.09755,195.1976,195.29765,195.3977,195.49774,195.5978,195.69785,195.7979,195.89795,195.998,196.09805,196.1981,196.29814,196.3982,196.49825,196.5983,196.69835,196.7984,196.89845,196.9985,197.09856,197.1986,197.29865,197.3987,197.49875,197.5988,197.69885,197.7989,197.89896,197.999,198.09904,198.1991,198.29915,198.3992,198.49925,198.5993,198.69936,198.7994,198.89944,198.9995,199.09955,199.1996,199.29965,199.3997,199.49976,199.5998,199.69984,199.7999,199.89995,200.0]} diff --git a/lib/node_modules/@stdlib/math/base/special/trigammaf/test/fixtures/julia/runner.jl b/lib/node_modules/@stdlib/math/base/special/trigammaf/test/fixtures/julia/runner.jl new file mode 100755 index 000000000000..664c4d0bdd9d --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/trigammaf/test/fixtures/julia/runner.jl @@ -0,0 +1,71 @@ +#!/usr/bin/env julia +# +# @license Apache-2.0 +# +# Copyright (c) 2025 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# 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 +using SpecialFunctions + +""" + gen( domain, name ) + +Generate fixture data and write to file. + +# Arguments + +* `domain`: domain +* `name::AbstractString`: output filename + +# Examples + +``` julia +julia> x = range( -1000, stop = 1000, length = 2001 ); +julia> gen( x, \"data.json\" ); +``` +""" +function gen( domain, name ) + x = collect( domain ); + y = trigamma.( x ); + + # Store data to be written to file as a collection: + data = Dict([ + ("x", x), + ("expected", y) + ]); + + # Based on the script directory, create an output filepath: + filepath = joinpath( dir, name ); + + # Write the data to the output filepath as JSON: + outfile = open( filepath, "w" ); + write( outfile, JSON.json(data) ); + write( outfile, "\n" ); + close( outfile ); +end + +# Get the filename: +file = @__FILE__; + +# Extract the directory in which this file resides: +dir = dirname( file ); + +# Generate fixture data for positive values: +x = Float32.( range( 0.0, stop = 200.0, length = 2000 ) ); +gen( x, "positive.json" ); + +# Generate fixture data for negative values: +x = Float32.( range( -200.0, stop = 0.0, length = 2000 ) ); +gen( x, "negative.json" ); diff --git a/lib/node_modules/@stdlib/math/base/special/trigammaf/test/test.js b/lib/node_modules/@stdlib/math/base/special/trigammaf/test/test.js new file mode 100644 index 000000000000..b8b76504b6f4 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/trigammaf/test/test.js @@ -0,0 +1,125 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* 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 incrspace = require( '@stdlib/array/base/incrspace' ); +var ulpdiff = require( '@stdlib/number/float32/base/ulp-difference' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var f32 = require( '@stdlib/number/float64/base/to-float32' ); +var NINF = require( '@stdlib/constants/float32/ninf' ); +var PINF = require( '@stdlib/constants/float32/pinf' ); +var trigammaf = require( './../lib' ); + + +// FIXTURES // + +var positive = require( './fixtures/julia/positive.json' ); +var negative = require( './fixtures/julia/negative.json' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof trigammaf, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'if provided a `NaN`, the function returns `NaN`', function test( t ) { + var val = trigammaf( NaN ); + t.strictEqual( isnanf( val ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'if provided `0`, the function returns `NaN`', function test( t ) { + var val = trigammaf( f32( 0.0 ) ); + t.strictEqual( isnanf( val ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'if provided positive infinity, the function returns `0`', function test( t ) { + var val = trigammaf( PINF ); + t.strictEqual( val, 0.0, 'returns expected value' ); + t.end(); +}); + +tape( 'if provided negative infinity, the function returns `NaN`', function test( t ) { + var val = trigammaf( NINF ); + t.strictEqual( isnanf( val ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'if provided a negative integer, the function returns `NaN`', function test( t ) { + var values; + var val; + var i; + + values = incrspace( -1.0, -100.0, -1.0 ); + for ( i = 0; i < values.length; i++ ) { + values[ i ] = f32( values[ i ] ); + val = trigammaf( values[ i ] ); + t.strictEqual( isnanf( val ), true, 'returns expected value' ); + } + t.end(); +}); + +tape( 'the function evaluates the trigamma function for positive numbers', function test( t ) { + var expected; + var x; + var y; + var i; + + x = positive.x; + expected = positive.expected; + for ( i = 0; i < x.length; i++ ) { + x[ i ] = f32( x[ i ] ); + y = trigammaf( x[ i ] ); + if ( expected[ i ] === null ) { + t.strictEqual( isnanf( y ), true, 'returns expected value' ); + continue; + } + expected[ i ] = f32( expected[ i ] ); + t.strictEqual( ulpdiff( y, expected[ i ] ) <= 1, true, 'returns expected value within 1 ulp' ); + } + t.end(); +}); + +tape( 'the function evaluates the trigamma function for negative numbers', function test( t ) { + var expected; + var x; + var y; + var i; + + x = negative.x; + expected = negative.expected; + for ( i = 0; i < x.length; i++ ) { + x[ i ] = f32( x[ i ] ); + y = trigammaf( x[ i ] ); + if ( expected[ i ] === null ) { + t.strictEqual( isnanf( y ), true, 'returns expected value' ); + continue; + } + expected[ i ] = f32( expected[ i ] ); + t.strictEqual( ulpdiff( y, expected[ i ] ) <= 3, true, 'returns expected value within 3 ulp' ); + } + t.end(); +}); diff --git a/lib/node_modules/@stdlib/math/base/special/trigammaf/test/test.native.js b/lib/node_modules/@stdlib/math/base/special/trigammaf/test/test.native.js new file mode 100644 index 000000000000..b70219e9a0d0 --- /dev/null +++ b/lib/node_modules/@stdlib/math/base/special/trigammaf/test/test.native.js @@ -0,0 +1,134 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* 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 incrspace = require( '@stdlib/array/base/incrspace' ); +var ulpdiff = require( '@stdlib/number/float32/base/ulp-difference' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var f32 = require( '@stdlib/number/float64/base/to-float32' ); +var NINF = require( '@stdlib/constants/float32/ninf' ); +var PINF = require( '@stdlib/constants/float32/pinf' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var trigammaf = tryRequire( resolve( __dirname, './../lib/native.js' ) ); +var opts = { + 'skip': ( trigammaf instanceof Error ) +}; + + +// FIXTURES // + +var positive = require( './fixtures/julia/positive.json' ); +var negative = require( './fixtures/julia/negative.json' ); + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof trigammaf, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'if provided a `NaN`, the function returns `NaN`', opts, function test( t ) { + var val = trigammaf( NaN ); + t.strictEqual( isnanf( val ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'if provided `0`, the function returns `NaN`', opts, function test( t ) { + var val = trigammaf( f32( 0.0 ) ); + t.strictEqual( isnanf( val ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'if provided positive infinity, the function returns `0`', opts, function test( t ) { + var val = trigammaf( PINF ); + t.strictEqual( val, 0.0, 'returns expected value' ); + t.end(); +}); + +tape( 'if provided negative infinity, the function returns `NaN`', opts, function test( t ) { + var val = trigammaf( NINF ); + t.strictEqual( isnanf( val ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'if provided a negative integer, the function returns `NaN`', opts, function test( t ) { + var values; + var val; + var i; + + values = incrspace( -1.0, -100.0, -1.0 ); + for ( i = 0; i < values.length; i++ ) { + values[ i ] = f32( values[ i ] ); + val = trigammaf( values[ i ] ); + t.strictEqual( isnanf( val ), true, 'returns expected value' ); + } + t.end(); +}); + +tape( 'the function evaluates the trigamma function for positive numbers', opts, function test( t ) { + var expected; + var x; + var y; + var i; + + x = positive.x; + expected = positive.expected; + for ( i = 0; i < x.length; i++ ) { + x[ i ] = f32( x[ i ] ); + y = trigammaf( x[ i ] ); + if ( expected[ i ] === null ) { + t.strictEqual( isnanf( y ), true, 'returns expected value' ); + continue; + } + expected[ i ] = f32( expected[ i ] ); + t.strictEqual( ulpdiff( y, expected[ i ] ) <= 1, true, 'returns expected value within 1 ulp' ); + } + t.end(); +}); + +tape( 'the function evaluates the trigamma function for negative numbers', opts, function test( t ) { + var expected; + var x; + var y; + var i; + + x = negative.x; + expected = negative.expected; + for ( i = 0; i < x.length; i++ ) { + x[ i ] = f32( x[ i ] ); + y = trigammaf( x[ i ] ); + if ( expected[ i ] === null ) { + t.strictEqual( isnanf( y ), true, 'returns expected value' ); + continue; + } + expected[ i ] = f32( expected[ i ] ); + t.strictEqual( ulpdiff( y, expected[ i ] ) <= 3, true, 'returns expected value within 3 ulp' ); + } + t.end(); +});